這幾天因爲作項目須要,要使用MySQL數據庫,使用的是MySQL Community Server 5.7.20,在Windows環境下安裝沒有遇到問題,可是在最新的CentOS 7.4環境下安裝時遇到了一些問題,如今把這些問題整理成注意事項公佈出來,以供後來者安裝時借鑑。html
1)安裝前須要卸載CentOS 7自帶的mariadb數據庫。mysql
CentOS從7開始,從自帶的yum源中取消了MySQL,改成默認安裝MySQL分支mariadb,若是想安裝MySQL官方版本,能夠卸載mariadb數據庫。方法是先執行rpm -qa|grep mariadb,對於全部出現的rpm包都執行rpm卸載。sql
2)在/etc/yum.repos.d目錄下建立MySQL yum安裝所需的Repo文件mysql-community.repo數據庫
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=0 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
這裏有兩點要注意bash
1.若是本機沒有安裝gpg密鑰,gpgcheck設置爲0,gpgkey一行註釋掉。服務器
2.在CentOS 7上安裝MySQL 5.7,community/el後面的版本號必須改成7,官網的例子是el/6,這是針對CentOS 6版本。若是不這麼改,在安裝MySQL Community Server必須的安裝包時,會安裝錯對應的版本,而致使後續安裝由於找不到對應包而沒法安裝,這一點必須注意,MySQL官網的指南沒有說清楚,值得吐槽。tcp
3)在執行安裝前最好執行指令ide
yum update
更新全部可能的依賴包。工具
4)安裝MySQL Community Server只須要執行url
yum install -y mysql-community-server
便可,安裝過程當中會自動安裝依賴的包,例如mysql-community-common等。
5)安裝完成後執行
systemctl status mysqld.service
檢查MySQL是否啓動
系統顯示服務狀態是inactive,沒有啓動,執行
systemctl start mysqld.service
執行完後再運行systemctl status mysqld.service查看mysql運行狀態
6)重置root用戶密碼
從MySQL 5.7後,第一次啓動MySQL,會生成root用戶的隨機密碼,能夠執行如下命令查看
grep 'temporary password' /var/log/mysqld.log
這個密碼是臨時密碼,必須修改成正式密碼,不然使用這個密碼登陸MySQL Server後,執行任何命令,都會顯示如下錯誤
咱們能夠執行如下命令,修改root用戶密碼
alter user user() identified by 'admin';
可是會顯示如下錯誤
這是由於MySQL默認使用的validate_password_policy是MEDIUM的緣故,MySQL的官網介紹validate_password_policy有如下三種:
Policy | Tests Performed |
0 or LOW | Length //只檢查密碼長度 |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters //檢查密碼長度,是否包含數字,大小寫字母,特殊字符 |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file //檢查密碼長度,是否包含數字,大小寫字母,特殊字符,以及是否包含字典文件 |
引用地址
https://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy
MySQL安裝後默認的validate_password_policy爲MEDIUM,咱們從新設置的密碼不符合這個policy的要求,因此命令執行失敗。
若是要修改密碼成功,咱們須要修改validate_password_policy爲0
set global validate_password_policy=0;
默認的validate_password_length是8,咱們能夠修改成5
set global validate_password_length=5;
完成這兩步後咱們能夠修改root用戶的密碼爲admin,命令和前面同樣。
7)容許遠程主機訪問
在MySQL服務器主機上使用root用戶登陸MySQL後,切換到mysql數據庫,再執行如下命令
運行完後重啓MySQL服務
systemctl restart mysqld.service
再在防火牆上打開3306端口,重啓firewalld服務
firewall-cmd --permanent --add-port=3306/tcp systemctl restart firewalld.service
以後可使用MySQL客戶端工具或者應用程序從遠程訪問MySQL服務器了。