好久之前的學習筆記,分享出來,希望能幫助到更多初學者
備注:本筆記以mysql-5.1.73版本為例進行說明
1. mysql源碼編譯/安裝步驟
1) 官網下載mysql源碼並解壓
2) cd至源碼目錄,執行
./configure --prefix=/home/slvher/tools/mysql-5.1.73 --with-charset=gbk --with-charset=gb2312 --with-extra-charsets=all --with-plugins=max-no-ndb備注:
shell> make shell> make install備注1:若install失敗是由第2步執行./configure時參數指定錯誤所致,則需重新執行./configure且務必執行make clean後,再重新make && make install。若不先make clean直接make,則源碼目錄下上次編譯完的部分文件不會重新編譯,而這些上次編譯的文件使用的還是上次的錯誤配置參數!
./bin/mysql_install_db --basedir=/home/slvher/tools/mysql-5.1.73 --datadir=/home/slvher/tools/mysql-5.1.73/db-data ./bin/mysql_install_db --user=slvher6) 在mysql安裝目錄執行如下命令啟動mysqld:
./bin/mysqld_safe &7) 執行ps -x查看mysqld是否啟動成功,其中d表示守護模式。因此,正常的關閉mysqlserver的方法應該是下面的命令:
./bin/mysqladmin shutdown -uroot -p然後輸入root密碼即可停掉mysqld進程,若強行kill -9殺進程可能會導致數據庫損壞!
shell> mysql -uroot mysql> show character set;備注1:新安裝的mysql server,root默認密碼為空
2. 安裝完成並啟動mysqld_safe後的訪問權限配置
1) 設定mysql server的root密碼
root密碼默認為空(因此,運行mysql -uroot可直接登錄;此外,登錄後運行"select User, Host, Password from mysql.user"可以看到root的Password那個字段為空),所以需要設定root密碼,方法有幾種:
a. 使用set password語句:
shell> mysql -u root mysql> set password for 'root'@'localhost' = PASSWORD('xxx'); # 其中xxx為新密碼 mysql> set password for 'root'@'host_name' = PASSWORD('xxx'); # 其中host_name為機器名 mysql> set password for 'root'@'127.0.0.1' = PASSWORD('xxx');b. 使用update語句:
shell> mysql -u root mysql> update mysql.user set Password = PASSWORD('xxx') where User = 'root'; mysql> flush privileges; # 該語句會讓mysql server重新讀取權限表若root對應的Host字段有多個,則推薦使用這種方法指定root密碼,因為它明顯更簡潔。
shell> mysqladmin -u root password "xxx" shell> mysqladmin -u root -h host_name passord "xxx"這種方法無法設定形如'root'@'127.0.0.1'的root新密碼,故個人覺得用處不大。
2) 添加新用戶並授權
由於root權限過大,有必要為mysql添加normal user並設定其權限,可通過以下步驟實現(假設已登錄了mysql server所在機器):
shell> mysql -u root -pxxx # 注意-p與password(假設為"xxx")間無空格,可省去輸入密碼的交互過程 mysql> create user work; mysql> grant select on db1.test_table to 'user'@'localhost' identified by 'xxx';上述grant語句執行效果:從localhost登錄的user必須用xxx密碼才能登錄成功,且只能訪問數據庫db1的test_table表。
mysql> grant all privileges on *.* to 'user'@'localhost' identified by 'xxx';若為遠程登錄的用戶授權(對db1.test_table的select/insert權限),則需執行下面的命令:
mysql> grant select, insert on db1.test_table to 'user'@'%' identified by 'xxx';上述語句中的'%'表示任意主機,因此可以覆蓋遠程登錄的情況。