安裝
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
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以後必須要用下邊這種方式修改密碼才能遠程登錄:否則只能本地登錄