Navicat連接阿里雲Mysql遇到的的坑


連上去那一刻,心態真是起飛了🤓

 

下面筆者總結安裝Mysql開始所遇到的坑(Ps 筆者是阿里雲的Centos6.8):

 

 

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

 

 出現類似上面問題的,就是說 你登錄的賬號是需要密碼的,意思是沒有使用密碼的root@localhost 拒絕訪問

 

 

先走一遍安裝流程:

1 . 進入系統 使用 su 命令 進入 root 權限。

2 . 使用 rpm -qa mysql 查看是否有存在的老的版本的mysql

3 . 如果存在舊版本的mysql 使用 yum remove mysql 命令刪除

4 . 使用 yum install mysql 命令安裝客戶端數據庫

5 . 使用 yum install mysql-server 命令安裝服務端數據庫

6 . 使用 /etc/init.d/mysqld start 來啟動數據庫

7 . 使用 mysql -u root -p 連接數據庫(因為第一次連接使用,所以沒有密碼 所以可以直接按回車進入)

至此 在Linux下的 Mysql 也算安裝完成了。

 

下面來為root用戶設置密碼:

我使用的是

1. mysqladmin -u root -p password newpassword 這個命令,不過有弊端,這個方法在設置新密碼后會提示輸入舊的密碼才能設置成功,第一次使用數據庫沒有密碼的 可以使用這個方法,提示輸入舊密碼時直接回車就OK,除此之外 並不適用於忘記已存在的舊密碼的用戶。

 

2. 由於所有的用戶信息都是存放在mysql庫(默認庫)的user表中,所以只要root用戶登錄到了Mysql的服務器中,適用UPDATE語句就可以直接修改自己的密碼了。

UPDATE語句的語法格式是:

 

1 UPDATE mysql.user set Password=PASSWORD('new_password') where User='username' and Host='hostname';
2 例如
3 UPDATE mysql.user set Password=PASSWORD('123456') where User='root' and Host='localhost';

 

記得執行完UPDATE語句后,使用 FLUSH PRIVILEGES重新加載權限表(update語句不能刷新權限表,所以一定要使用FLUSH PRIVILEGES語句刷新權限表,否則修改后的密碼不能生效)

 

3. 使用SET語句修改root密碼

當用戶登錄到Mysql服務器之后,還可以通過SET語句修改密碼,語法格式如下:

SET PASSWORD=PASSWORD('new_password');

要注意的是 SET 語句沒有對密碼的加密功能,所以使用PASSWORD()函數進行加密,且密碼需要使用單引號括起來。

 

上面三種方法應對都是常規情況,方法1區別於方法2/3,方法1不需要登錄到Mysql服務器,方法2/3都是在Mysql服務器對用戶信息表操作完成密碼的更改。

 

不過往往我們遇到的是一些比較極端的情況,當我們root用戶的密碼丟失了怎么辦呢,這時我們並不能登錄到Mysql服務器,也不知道舊密碼;這時Mysql提供了對應的應急處理機制,通過特殊的方法登錄到 Mysql服務器:

1. 停止 Mysql 服務

 使用 service mysql stop 命令停止

2. 使用 mysqld_safe --skip-grant-tables 命令,可以停止Mysql的權限判斷,也就是說可以任何用戶直接訪問數據庫,並且可以啟東Mysql服務。

3. 執行完第二條命令后,打開新的終端,此時便可以直接登錄Mysql服務,登錄之后的密碼設置操作參考👆。

 

下面講講端口和防火牆的問題

 

首先要確認的是3306端口是不是對外開放了。Mysql默認狀態是不開放對外訪問的,所以這應該是大多數問題所在。

 

***開啟3306端口及常用的其它端口***

 

查看是否有這個文件/etc/sysconfig/iptables,如果沒有

 

iptables -P OUTPUT ACCEPT

 

service iptables save 進行保存,默認就保存到了/etc/sysconfig目錄下的iptables文件中

 

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT   #允許3306數據庫端口通過防火牆

 

service iptables save

 

cat /etc/sysconfig/iptables有3306這條信息

 

service iptables restart就ok咯

 

 

Ps: 在Mysql服務下 使用show global variables like 'port' 查看端口號,默認是3306

通過編輯 /etc/my.cnf 使用 port=newport 來修改新的端口。

 

 

經常碰到的就是這些問題了,如果上述所有的問題都嘗試過了,還是沒有解決,那么可以考慮是不是運營商的安全組的問題。

筆者最后的問題就是出在 阿里雲-安全組上

筆者 設置了遠程主機連接的權限 設置了3306通過防火牆的限制 ,可以navicat還是連接不上Mysql服務,后來 去看了下阿里雲的安全組,簡單了解下設置了。

bingou 完美解決,尼瑪的😭,害我折騰了一上午

 

 頂一篇 :http://www.cnblogs.com/meetrice/p/5309666.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM