阿里雲centos7安裝msyql5.7超級超級巨大巨大的坑

安裝

1、注意:安裝msyql前務必卸載cenos自帶的mariadb,否則會報錯
在這裏插入圖片描述
查詢是否已安裝mariadb

rpm –qa | grep mariadb

已安裝徹底卸載:

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

2、去msyql官網下載對應的rpm包
common、lib、 client、 server,後邊依賴前邊,要依次安裝
在這裏插入圖片描述
rpm –ivh 對應rpm包名

3、安裝server,可能會提示:
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.27-1.el7.x86_64
運行:

yum install libaio

之後再次運行rpm –ivh mysql命令

4、查看是否安裝成功
rpm -qa | grep mysql 或者 yum list installed | grep mysql
5、啓停msyql
啓動mysql

systemctl start mysqld.service

查看mysql狀態

systemctl status mysqld.service

關閉mysql

systemctl stop mysqld.service

安裝成功後,登錄mysql修改root密碼

1、需要先把安裝時生成的臨時密碼查詢出來

grep 'temporary password' /var/log/mysqld.log

查詢安裝mysql初始密碼
2、使用初始密碼登錄後,修改root用戶的密碼
好氣呀!最大的坑就在這兒呢!
剛開始用的這條sql修改的密碼:

alter user 'root'@'localhost' identified by '密碼,必須包含大寫、小寫、數字、符號';  
修改之後,爲了讓修改起作用,切記要運行以下sql:
	flush privileges;

設置允許root用戶遠程連接,%代表允許從任何主機用root連接mysql

grant all privileges on *.* to 'root' @'%' identified by ' 你的密碼' with grant option;
flush privileges;

退出,用上邊修改的密碼登錄mysql,成功了,看着好像大功告成啦!
但是,後來用navcat遠程連接mysql時卻總是提示:
ERROR 1045 (28000): Access denied for user ‘root’@‘登錄電腦的ip’
欲入坑切往下看–遠程連接

遠程連接mysql

我這次是在阿里雲的CES服務器上安裝的mysql,爲了平時CRUD方便,第一時間就要用navcat進行遠程連接。爲了能連接成功,需要滿足4個條件:
1. mysql允許的 Host 是 %
即允許遠程登錄mysql,下邊的sql就是授予root用戶遠程登錄權限,上文修改密碼時已經設置過。

grant all privileges on *.* to 'root' @'%' identified by ' 你的密碼' with grant option;
flush privileges;

可以查看下用戶和允許登陸的主機:

select host,user from user;

在這裏插入圖片描述
2.服務器防火牆允許訪問3306端口
centos7有iptables和firewall兩種防火牆默認都是關閉的,需要手動啓動,推薦firewall這種方式,而且很好設置。

systemctl  start   firewalld.service	#啓動防火牆
systemctl  stop   firewalld.service	#停止防火牆
systemctl enable firewalld.service	 #設置防火牆開機啓動
firewall-cmd --state	#查看狀態,如果沒啓動需要先啓動
firewall-cmd --list-ports	#查看哪些端口被放行
firewall-cmd --zone=public --add-port=80/tcp –permanent	
firewall-cmd --zone=public --add-port=3306/tcp --permanent		#增加要放行的端口
firewall-cmd --reload 	#增加放行端口後,使最新的防火牆設置規則生效。

說明:
#–zone #作用域
#–add-port=80/tcp #添加端口,格式爲:端口/通訊協議
#–permanent 永久生效,沒有此參數重啓後失效

如下圖,把80、3306端口放行:
在這裏插入圖片描述
3. 確保 bind-address 正確配置, 路徑 /etc/my.cnf

vim /etc/my.cnf

如果查看mysql配置文件看到如下圖所示,就不用改了
如果有:bind-address=127.0.0.1需要註釋,這樣只能本地連接
在這裏插入圖片描述
4、在阿里雲CES實例的安全組策略中放行3306端口
在這裏插入圖片描述

最後的大坑

遠程登錄時,總是報錯:
*ERROR 1045 (28000): Access denied for user ‘root’@'登錄電腦的ip’ *
查了無數資料,不行
把服務器整個還原又重裝msyql,還是無法連接,說多了都是淚呀!
最後,偶然情況下運行了下邊的修改密碼的sql:

update mysql.user set authentication_string=password('密碼') where user='root'

再次連接,竟然就成了,午夜12點之前莫名其妙的就成了,於是某猿熱淚盈眶,趁熱寫出了這些肺腑之言。
切記,切記,切記!!!
5.7以後必須要用下邊這種方式修改密碼才能遠程登錄:否則只能本地登錄

update mysql.user set authentication_string=password(‘密碼’) where user=‘root’

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章