騰訊雲伺服器 MySQL 遠端連線設定

truesnow發表於2018-06-22

使用 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;

file

  • 立即重新整理許可權
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 埠

file
file

新增如下規則:
file

新增完成後關聯伺服器例項即可。

使用 GUI 工具連線 MySQL

至此,就可以成功連線 MySQL 了~

這裡伺服器系統是 Ubuntu,MySQL 的配置路徑也是預設的,根據實際情況處理。

好看的臉蛋,一米六七

相關文章