使用 MySQL GUI 連線騰訊雲的 MySQL 伺服器連線失敗,經查是由三個原因引起的:
- 雲伺服器未配置安全組,開通 3306 埠。
- 資料庫預設只允許本地連線,拒絕遠端連線。
- 所使用 root 賬號無遠端連線許可權,需要設定許可權,或新建賬號用於遠端連線。
建立遠端連線賬號,給 root 開通遠端連線許可權
- 登入 MySQL
mysql -u root -p
- 檢視當前 MySQL 賬戶
SELECT `user`,`host` FROM mysql.user;
輸出:
+------------------+-----------+
| user | host |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
- 建立新使用者
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
注意:
@
左邊是使用者名稱,右邊是域名、IP 和%
,表示可以訪問 mysql 的域名和 IP,% 表示外部任何地址都能訪問。
- 給新使用者和 root 賦值所有許可權
-- 給新使用者許可權
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
-- 給 root 使用者許可權
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
-- 或
UPDATE USER SET `host`='%' WHERE `user`='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
出於嚴格的安全考慮的話,生產環境請將 % 換成特定的 IP。
檢視修改後賬戶資訊:
SELECT `user`,`host` FROM mysql.user;
- 立即重新整理許可權
FLUSH PRIVILEGES;
更改 MySQL 配置,允許遠端連線
MySQL 無法連線的可能原因是伺服器防火牆未放開 3306 埠,或 MySQL 伺服器禁止遠端連線了。
- 檢視 3306 埠是否開放
netstat -an | grep 3306
tcp6 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
如上表示 3306 埠並未開啟。進入 MySQL 配置目錄:/etc/mysql/mysql.conf.d/,編輯配置檔案:
cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf
MySQL 預設只允許本地伺服器訪問,註釋以下配置:
# bind-address = 127.0.0.1
儲存並退出,然後重啟 MySQL 服務:
sudo service mysql stop
sudo service mysql start
設定騰訊雲安全組,開放 MySQL 3306 埠
新增如下規則:
新增完成後關聯伺服器例項即可。
使用 GUI 工具連線 MySQL
至此,就可以成功連線 MySQL 了~
這裡伺服器系統是 Ubuntu,MySQL 的配置路徑也是預設的,根據實際情況處理。