MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定發(fā)行版安裝包(如 .rpm)以及二進(jìn)制通用版安裝包(.tar.gz)。一般情況下,很多項(xiàng)目都傾向于采用二進(jìn)制通用安裝包形式來(lái)進(jìn)行安裝配置,自定義非常方便。但在安裝過(guò)程中發(fā)現(xiàn),其實(shí)官方提供的安裝說(shuō)明文件太過(guò)簡(jiǎn)單,而且里面的參數(shù)還有問(wèn)題,依照?qǐng)?zhí)行后,mysql 服務(wù)啟動(dòng)報(bào)錯(cuò),查找了一些資料并反復(fù)試驗(yàn)后,自己總結(jié)出一套切實(shí)可行的安裝配置流程,具體如下:
1、下載 MySQL for Linux Generic 二進(jìn)制版本安裝包(.tar.gz),這里以 5.7.11 版本為例。
2、我一般習(xí)慣于將 MySQL 安裝到 /opt 目錄下,所以我將 MySQL 安裝包文件復(fù)制到 /opt 目錄下,切換為 root 賬號(hào)后執(zhí)行以下命令:
1
2
3
|
# tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz # ln -s mysql-5.7.11-linux-glibc2.5-x86_64 mysql # cd mysql |
建立一個(gè) mysql 的軟連接,是為了以后方便配置與操作。
3、5.7.11 版本的通用二進(jìn)制安裝包經(jīng)解壓后得到的 MySQL 目錄,內(nèi)部并未包含數(shù)據(jù)文件存放的目錄,所以需要單獨(dú)再創(chuàng)建一個(gè)子目錄用于存放數(shù)據(jù)文件,比如取名為 data,在第二步命令后(確保在 /opt/mysql 目錄下),繼續(xù)執(zhí)行如下命令:
1
2
3
4
5
6
|
# groupadd mysql # useradd -r -g mysql -s /bin/false mysql # mkdir data # chown -R root:root . # bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data # bin/mysql_ssl_rsa_setup --datadir=/opt/mysql/data |
這里特別說(shuō)明一下,根據(jù)官方文檔說(shuō)法,從 5.7.6 版本開始,MySQL 初始化使用 mysqld --initialize 命令,不再使用 mysql_install_db 命令了。但是官方文檔給出的 mysqld --initialize 命令并沒有給出 --basedir 以及 --datadir 參數(shù),因?yàn)樗J(rèn)使用 /etc/my.cnf 配置文件。有些 Linux 發(fā)行版在安裝過(guò)程中可能會(huì)默認(rèn)生成這個(gè) mysql 配置文件并保存在 /etc 目錄下,而默認(rèn)配置文件中的 basedir、datadir 是被注釋的,沒有實(shí)際內(nèi)容,這樣 mysqld 實(shí)際上還是不知道當(dāng)前的 basedir、datadir 具體是哪個(gè)目錄。所以這里就通過(guò)命令行參數(shù)指定我們的自定義目錄。包括 mysql_ssl_rsa_setup 命令也要指定 datadir 目錄,因?yàn)閿?shù)據(jù)庫(kù)需要的密鑰文件也都和數(shù)據(jù)文件保存在一起,都位于 datadir 目錄內(nèi)。
4、上述工作完成后,先不慌啟動(dòng)數(shù)據(jù)庫(kù)服務(wù),這時(shí)還要?jiǎng)?chuàng)建 MySQL 服務(wù)的配置文件 my.cnf。這個(gè)文件可以從 /opt/mysql/support-files 子目錄下找到一個(gè)叫 my-default.cnf 的配置樣例文件,然后復(fù)制一個(gè)出來(lái),改名為 my.cnf 并放到 /opt/mysql 下即可。根據(jù) MySQL 的規(guī)則,它的配置文件必須以 my.cnf 命名,讀取的順序是先嘗試讀取 /etc/my.cnf,如果不存在則再讀取 basedir 目錄下的 my.cnf,如果系統(tǒng)環(huán)境變量沒有 basedir,則嘗試讀取服務(wù)啟動(dòng)所在當(dāng)前目錄下的 my.cnf,這里就是 /opt/mysql/my.cnf 這種情況,如果還是不存在,則讀取當(dāng)前用戶家目錄下的 .mysql/my.cnf(需要看官方文檔確認(rèn)一下,記不清了)。所以,我們這里只需保證在 /opt/mysql 下有一個(gè) my.cnf,修改其中的內(nèi)容為如下:
1
2
3
|
basedir = /opt/mysql datadir = /opt/mysql/data log-error = /var/log/mysql-error .log |
其余的不變。根據(jù)官方文檔,log-error 用來(lái)指定服務(wù)啟動(dòng)后的運(yùn)行信息日志文件路徑,運(yùn)行信息包括 Notice、Error 等類型的日志。
5、配置文件修改保存好后,就可以啟動(dòng)服務(wù)了,確保當(dāng)前目錄為 /opt/mysql,然后運(yùn)行以下命令:
1
|
# bin/msyqld_safe --user=mysql & |
這時(shí)服務(wù)就可以正常啟動(dòng)了。你還可以通過(guò)命令 netstat -na -t 查看 MySQL 服務(wù)的端口 3306 是否已經(jīng)處在監(jiān)聽狀態(tài),如果是,則表示服務(wù)啟動(dòng)正常。當(dāng)然,你也可以查看日志文件的內(nèi)容來(lái)確定,我們這里因?yàn)樵谝言谂渲梦募兄付ㄈ罩疚募?/var/log/mysql-error.log,所以查看該文件即可。
6、在本機(jī)登錄 MySQL 服務(wù),從 5.7.10 版本開始不允許 root 空密碼登錄了。其實(shí)在執(zhí)行 mysqld --initialize 后系統(tǒng)就會(huì)為 root 生成一個(gè)初始化密碼,并在屏幕標(biāo)準(zhǔn)輸出時(shí)顯示出來(lái),這個(gè)要記住!用這個(gè)密碼第一次登錄后,才能再修改密碼,這里假定系統(tǒng)生成的初始化密碼為 xxxxxx,命令如下:
1
|
# bin/mysql --user=root --password=xxxxxx |
這樣就可以登錄 MySQL 服務(wù)器了。
7、登錄以后,系統(tǒng)要求必須修改 root 賬號(hào)的密碼,MySQL 命令如下:
1
|
mysql> set password=password( '1234' ); |
這樣就可以把 root 賬號(hào)改為 1234 了。
8、在 Linux 下為了安全,默認(rèn)是不允許 MySQL 服務(wù)器本機(jī)以外的機(jī)器訪問(wèn) MySQL 數(shù)據(jù)庫(kù)服務(wù)的,因此需要重新授權(quán) root 賬號(hào)。方便其他機(jī)器遠(yuǎn)程訪問(wèn) MySQL 服務(wù)器,MySQL 命令如下:
1
2
|
mysql> grant all privileges on *.* to root@ '%' identified by '1234' ; mysql> flush privileges; |
這樣就可以允許從其他機(jī)器用 root 賬號(hào)遠(yuǎn)程登錄 MySQL 服務(wù)器了,可以用下面的 MySQL 命令來(lái)驗(yàn)證一下:
1
2
3
4
5
6
7
8
9
10
|
mysql> use mysql; mysql> select host,user from user; +-----------+-----------+ | host | user | +-----------+-----------+ | % | root | | localhost | mysql.sys | | localhost | root | +-----------+-----------+ 3 rows in set (0.00 sec) |
證明系統(tǒng)表 user 中已經(jīng)增加了一條關(guān)于 root 遠(yuǎn)程登錄的記錄。
9、補(bǔ)充一下如何停止 mysql 服務(wù)的命令:
1
|
# mysqladmin --user=root --password shutdown |
這里 root 是 mysql 數(shù)據(jù)庫(kù)的 root,并不是操作系統(tǒng)的賬號(hào),這點(diǎn)不要搞混了,該命令會(huì)提示輸入 mysql root 的密碼,正確的話就會(huì)停止 mysql 服務(wù)了。
原文鏈接:http://www.cnblogs.com/cyberniuniu/p/5273961.html