Mysql操作小結

2021-07-13 22:34:26 字數 4259 閱讀 8481

**:

使用mysql也已經有好多年了,paul dubois的那本mysql (developer』s library)當年也從頭到尾的翻了好多好多遍。但是由於各種原因,沒有總結留下任何東西。以前使用mysql都用的c api,最近打算開始學習php,自然離不開mysql,所以打算把這些年學習的mysql的相關知識總結一下,寫在這篇文章中。既然命名為tips,那麼就要有tips的樣子,我的目標是短小精悍,那麼就不可能長篇的議論,我打算通過一種舒服的方式,把mysql常用功能和api總結出來,在過很久之後看的時候,能夠立即回想起來mysql的一些知識要點,快速的進入開發狀態之中。

1. 安裝

在使用mysql之前,最先要做的就是安裝。在windows上的安裝我就不說了,非常簡單直接。這裡說一下在linux/unix系統上的安裝。

configure的時候需要一些引數,這些引數可以./configure –help檢視說明,也可以去官方**查詢文件,這裡我記錄一下自己選用的一些引數含義。

靜態編譯

–enable-static 

–with-client-ldflags=-all-static 

–with-mysqld-ldflags=-all-static

靜態編譯選項,據說可以提高效能13%,沒有測試過。

以執行緒方式編譯客戶端

–enable-thread-safe-client

去掉innodb表支援

–without-innodb

innodb是一種支援事務處理的表,適合企業級應用。

去掉isam表型別支援

–without-isam

isam表是一種依賴平台的表,現在很少用了。

取消導航除錯

–without-ndb-debug

日誌檔案目錄

–localstatedir=/usr/local/mysql/var/

mysql字尾名

–with-server-suffix=-enterprise-gpl

在用mysql登入的時候在版本號的後面可以看到。

去除診斷模式

–without-debug

如果用–with-debug=full編譯,大多數查詢慢20%。

大表支援

–with-big-tables

字符集–with-extra-charsets=gbk,gb2312,utf8

設定支援gbk,gb2312,utf8字符集。

強制使用pthread庫

–with-pthread

posix執行緒庫。

彙編–enable-assembler

預設字符集

–with-charset=utf8

使用unix套接字

–with-unix-socket-path=/tmp/mysql.sock

據說提高7.5%效能連線效能,所以在windows下mysql效能肯定不如unix。

埠–with-tcp-port=3306

指定mysql服務將監聽tcp 3306埠。

對於大部分應用來說,上面的引數基本不用設定。對於中國使用者來說,則最多需要設定一下字符集。

我的configure命令:

./configure –with-charset=utf8 -with-extra-charsets=all –prefix=/home/mysql

當然,這個命令的前提是系統中要有乙個/home/mysql的資料夾,我是用建立乙個名稱為mysql的使用者來做到這點的,而且,configure命令也是使用mysql使用者執行的,新增乙個mysql使用者的命令很簡單,下面這句可以直接複製貼上。

sudo useradd -m -c "mysql server" -d /home/mysql -s /bin/bash -u 502 mysql

然後make && make install,再更改下許可權:sudo chown mysql:mysql -r mysql 。

2. 配置

安裝好了之後,需要執行mysql_install_db來初始化資料庫。這個命令可以有不少引數,下面列一下。

–basedir=/usr/local/mysql

預設mysql路徑

–datadir=/usr/local/mysql/data

預設mysql資料路徑

–user=mysql

預設使用mysql服務使用者

–defaults-file=/usr/local/mysql/my.cnf

預設配置檔案

–pid-file=/usr/local/mysql/mysql.pid

預設pid檔案路徑

另外,mysql配置檔案命名為my.cnf,儲存的位置和讀取順序在這裡做乙個說明。

檔名說明

/etc/my.cnf

全域性選項

$mysql_home/my.cnf

伺服器相關選項

defaults-extra-file

伺服器啟動時用–defaults-extra-file=path指定的檔案

~/.my.cnf

使用者相關選項

mysql_home是乙個環境變數,包含伺服器相關的my.cnf檔案駐留的目錄路徑。

如果未設定mysql_home,並且datadir中有乙個my.cnf檔案,basedir中沒有my.cnf檔案,mysqld_safe將mysql_home設定為datadir。否則,如果未設定mysql_home並且在datadir中沒有my.cnf,則mysqld_safe將mysql_home設定為basedir。

典型情況為/usr/local/mysql/data,請注意這是配置時指定的資料目錄的位置,而不是mysqld_safe啟動時用–datadir指定的。執行時使用–datadir對尋找選項檔案的伺服器沒有效果,因為伺服器在處理命令列參量之前尋找這些選項。

mysql按照上述順序尋找選項檔案,並讀存在的選項檔案。如果你想要使用的某個選項檔案不存在,則用明文文字編輯器建立。如果存在多個選項檔案,檔案中指定的後讀取的選項要優先檔案中指定的先讀取的選項。

可以從mysql安裝目錄/share/mysql/下拷貝乙個配置檔案到mysql使用者目錄下,重新命名為.my.cnf,我的拷貝命令:

cp share/mysql/my-medium.cnf .my.cnf

注釋掉其中的skip-federated選項,如果有的話。

3. 啟動和關閉

有兩種啟動方式:

一種是執行mysqld_safe 引數 &,例如:

mysqld_safe –defaults-file=/usr/local/mysql/my.cnf –user=mysql &

另一種是執行mysql安裝目錄/share/mysql/mysql.server 引數,例如:

/home/mysql/share/mysql/mysql.server start

關閉mysql可以kill掉程序,也可以使用/home/mysql/share/mysql/mysql.server stop 命令。

4. 命令

首先要給root設定一下密碼,這個我們採用

/home/mysql//bin/mysqladmin -u root password 『new-password』

或者/home/mysql//bin/mysqladmin -u root -h ehost.edomain password 『new-password』

的方式。

4.1. 建立使用者

雖然建立使用者有好多種方式,但是我在這裡只說一種,這種記住了就可以了。

grant命令:

grant [privileges, …] on [database].[table] to 『user』@'somehost』 identified by 『password』 [with grant option];

下面是幾個例子:

grant all privileges on *.* to 『monty』@'localhost』 identified by 『some_pass』 with grant option;

grant all privileges on *.* to 『monty』@'%』 identified by 『some_pass』 with grant option;

grant reload,process on *.* to 『admin』@'localhost』; 

grant usage on *.* to 『dummy』@'localhost』;

其實,登陸進去之後,help grant就可以理解得到很詳細的說明了。說到這裡,鄭重的跟大家說,多用help,多看文件,不要老用google,哈哈

MySQL 基本操作小結(1)

庫的操作 創,查,刪,改 create database 庫名稱 show databases show databases like 部分名稱 show create database 庫名稱 show create database 庫名稱 g drop database if exists 庫...

C SQlite 操作小結

對擴平台的微型資料庫sqlite 進行使用了,主要注意一點是 資料庫若未建立則使用 sqliteconnection.createfile databasename 資料庫已經建立,並要進行訪問 sqliteconnection m conn new sqliteconnection datasou...

xml操作小結

using system.xml 初始化乙個xml例項 xmldocument xml new xmldocument 指定乙個節點 xmlnode root xml.selectsinglenode root 獲取節點下所有直接子節點 xmlnodelist childlist root.chil...