阿里雲ECS部署MariaDB,配置問題及排除思路總結

因小程序需要部署服務器端進行聯調,所以在阿里雲ECS 部署了MariaDB,部署過程基本一步一個坑~踩出來的

故簡單覆盤,遇到問題 ,一定要定位到原因再 再進行有序的排查~

不禁讓我想起去年阿里面試 問我服務器連接不上問題排查的思路,現在的思路比當時又上了一層樓吧~

 

登錄:

本地連接:mysql -u root -p

本地遠程連接:mysql -h yourip -u user -p

 

問題:

1.網絡監測

只要可以ping通,說明網絡沒問題

2.端口監測

查看端口監控狀態

netstat -talnp

若是0.0.0.0:3306 說明已對所有地址監聽,若沒有可在my.conf裏配置

3.防火牆監測

查看防火牆狀態

iptables --list

4.mysql配置文件檢查

  1. 檢查my.cnf的配置,bind-address=addr可以配置綁定ip地址。
  2. 不配置或者IP配置爲0.0.0.0,表示監聽所有客戶端連接。
  3. #ps -aux | grep mysql 查看進程ID是3340
  4. #ll /proc/3340 查看進程程序情況,找配置文件或者#which mysql 找程序路徑

5.mysql訪問權限

  1. 進入mysql數據庫
  2. $mysql -u root -p
  3. >use mysql;
  4. >select host,user from user;
  5. MySQL建用戶的時候會指定一個host,默認是127.0.0.1/localhost只能本機訪問;
  6. 其它機器用這個用戶帳號訪問會提示沒有權限,host改爲%,表示允許所有機器訪問。

6.阿里雲ECS安全組中設置 配置規則

頭一天晚上本來早早部署好準備測試,搞到睡覺都沒弄好~

睡了一覺突然想起來是不是跟阿里雲什麼配置有關,果然。。。

增加入方向 MariaDB的3306端口的監聽權限~謝謝啊,讓我又精通了mysql配置~

 

 

遠程連接問題參考:

https://www.linuxidc.com/Linux/2017-10/148068.htm

https://www.2cto.com/database/201401/269578.html

https://jingyan.baidu.com/article/95c9d20dac9040ec4f75617a.html

https://blog.csdn.net/qq_26816591/article/details/52462740

增加本地防火牆策略

 

防火牆:

centos從7開始默認用的是firewalld,這個是基於iptables的,雖然有iptables的核心,但是iptables的服務是沒安裝的。所以你只要停止firewalld服務即可: 

systemctl stop firewalld.service && systemctl disable firewalld.service

systemctl start firewalld.service && systemctl enable firewalld.service

centos7沒有iptables

1 關閉防火牆-----service iptables stop 

2 啓動防火牆-----service iptables start 

3 重啓防火牆-----service iptables restart 

4 查看防火牆狀態--service iptables status 

5 永久關閉防火牆--chkconfig iptables off 

6 永久關閉後啓用--chkconfig iptables on

 

 

MariaDb的安裝

 

yum install mariadb mariadb-server #詢問是否要安裝,輸入Y即可自動安裝

 

systemctl start mariadb.service #啓動MariaDB

systemctl stop mariadb.service #停止MariaDB

systemctl restart mariadb.service #重啓MariaDB

systemctl enable mariadb.service #設置開機自動啓動

 systemctl disenable mariadb.service #設置開機自啓關閉

 

創建用戶

  • CREATE USER account [IDENTIFIED BY ‘password’];

 CREATE USER 'yunqi'@'%' IDENTIFIED BY 'yunqi';

 

MariaDB [(none)]> CREATE USER 'yunqi'@'IP.%' IDENTIFIED BY 'yangfan';

雲棲上線後,通過此方式建立數據庫授權

MariaDB [(none)]> CREATE USER 'yunqi'@'%.yunqilive.cn' IDENTIFIED BY 'yunqi';

雲棲上線後,通過此方式建立數據庫授權

MariaDB [(none)]> CREATE USER 'yunqi'@'%' IDENTIFIED BY 'yunqi&';

在測試階段使用 通配符 來授權所有用戶

 

設置密碼

 UPDATE mysql.user SET password = PASSWORD('yunqi&maria') WHERE USER = 'yunqi';

set password for 'yunqi'@'%' =password('yunqi&');

 

用戶管理

https://www.cnblogs.com/f-ck-need-u/p/8994220.html

 

用戶授權(其中 with grant option 表示擁有該權限後的用戶可以給別的用戶授予自身所擁有的權限。)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.222.1' IDENTIFIED BY 'password' WITH GRANT OPTION;

grant all on yunqi to yunqi identified by 'password';

grant all on yunqi.* TO yunqi@'%' IDENTIFIED BY 'password';

 

 

//取消權限 

revoke all on *.* from 'root'@'%'; 

delete from user where  user='user' and  host='%';,host from user;

//刷新並生效權限

flush privileges;

 

此時發現問題:local不能登錄yunqi用戶,報錯:ERROR 1045 (28000): Access denied for user 'yunqi'@'localhost' (using password: YES)

解決方式參考:https://blog.csdn.net/u010098331/article/details/50730309

 

PS:

| GRANT USAGE ON *.* TO 'yunqi'@'%' IDENTIFIED BY PASSWORD '*B717581CBB1306AEA99BAD57CB004F51B4F5BDDC' |

| GRANT ALL PRIVILEGES ON `yunqi`.* TO 'yunqi'@'%'                                                     |

| GRANT ALL PRIVILEGES ON `yunqi`.`yunqi` TO 'yunqi'@'%'

注意:all不能和*.*一起使用的,不然就報錯了。

 

find 目錄 -name “”

grep -rn "bind-address" *

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