2019年8月14日 星期三

MySQL/MariaDB遠端連線設定



使用DbVisualizer(版本10.0.21)來連線VMWare開的虛擬機資料庫,卻顯示下面的錯誤:
MySQL Connection Error: (1130) Host 'xxx.xx.x.x' is not allowed to connect to this MySQL server


環境

  • MySQL 5.7.27
  • Ubuntu 18.04


步驟

1. 開放防火牆
預設的埠號(port number)3306。
sudo ufw allow mysql/tcp

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
3306/tcp                   ALLOW       Anywhere
3306/tcp (v6)              ALLOW       Anywhere (v6)

2. 修改綁定的連線位址
請找到指定檔案
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
把這一行刪掉或註解
bind-address=127.0.0.1

3. 新增遠端連線的使用者
預設的情況下,用戶應該都只能從localhost進行連線,查詢方式:
SELECT User,Host FROM mysql.user;
+--------------+------------------+
| host         | User             |
+--------------+------------------+
| localhost    | debian-sys-maint |
| localhost    | mysql.session    |
| localhost    | mysql.sys        |
| localhost    | root             |
+--------------+------------------+
可以看到有4個使用者,允許從localhost進行連線。

方法一、新增指定IP的連線用戶
CREATE USER 'username'@'ip_address' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'ip_address';
方法二、新增任意IP的連線用戶
如果是%就是不指定IP
CREATE USER 'username'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
新增完成之後請執行:
FLUSH PRIVILEGES;

可以確認一下使用者有沒有新增成功,也可以查詢使用者權限:
SHOW GRANTS FOR username@ip_address;

// 查詢現在使用者的權限
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

步驟到此就完成了!試著用剛剛的帳密登入mysql囉


DbVisualizer連線步驟

1.設定專案名稱

2. 資料庫類型

3. 填寫資料庫位址、port number、使用者帳密

參考資料:
https://docs.bitnami.com/virtual-machine/apps/reviewboard/administration/connect-remotely/

其他:
DbVisualizer 10.0.21 [安裝]
phpmyadmin的替代方案 https://alternative.me/phpmyadmin