**:
使用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...