CentOS環境下mysql遠端連線和問題解決

weixin_33912246發表於2018-01-15

1、mysql許可權修改

1.1 進入mysql控制檯

1.  mysql -u root -p mysql  //第一個mysql是執行命令,第二個mysql是系統資料庫  

如果順利進入mysql控制檯,請跳到1.2步驟。
如果出現修改密碼時修改錯誤,比如:

1.  update user set password='123456' where user = 'root';  

這樣修改是有問題的。應該:

1.  update user set password=PASSWORD('123456') where user='root';  

依照上面那種修改密碼,會導致的錯誤有:

1.  ERROR 1045(28000) :Access denied for user ''@'localhost' (using password:No)  



解決辦法:
1.1.1 關閉mysql

1.  service mysqld stop  

1.1.2 遮蔽許可權

1.  mysqld_safe --skip-grant-table  

1.1.3 新開一個終端(不能關閉原來終端)

1.  mysql -u root mysql  

進入mysql後執行:

1.  UPDATE user SET password=PASSWORD('123456') WHERE user='root';  
2.  flush privileges;//記得要執行這句話,否則如果關閉先前的終端,又出現原來的錯誤  
3.  exit;  


1.2在mysql控制檯下修改許可權

1.  grant all privileges on *.* to 'root'@'%' identified by '123456' 
with grant option;  
//root 是使用者名稱,% 表示任意主機,'123456' 指定的登入密碼
(這個和本地的root密碼可以設定不同,互不影響)  
2.  flush privileges; //過載系統許可權  
3.  exit;//退出mysql控制檯  


2、CentOS環境開放3306埠

新增規則,開啟3306埠

1.  iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT  

檢視規則是否生效

1.  iptables -L -n  //或者 service iptables status  

刪除規則,關閉3306埠

1.  iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT  

注意:上面使用iptables新增/刪除規則都是臨時的,如果需要重啟也生效,就要儲存修改:

1.  service iptables save //或者 /etc/init.d/iptables save  

例外一種方式也可以實現:

1.  vi /etc/sysconfig/iptables //在該檔案中加入下面這條規則也是可以生效的  
2.  -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT  


3.如何讓mysql開機自動啟動

3.1修改rc.local檔案

1.  vi /etc/rc.d/rc.local  

新增如下程式碼:

1.  /etc/rc.d/init.d/mysqld start  

3.2使用chkconfig命令實現

先檢視所有自動啟動服務

1.  chkconfig --list //指定檢視 chkconfig --list mysqld  

如果沒有新增到chkconfig列表中

1.  chkconfig --add mysqld  

開啟自動啟動

1.  chkconfig mysqld on  

檢視是否啟動了

1.  chkconfig --list mysqld  

結果顯示:

mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

表示在系統級別為:2、3、4、5時自動啟動

相關文章