Ubuntu
遠端連接到 MySql AWS Lightsail
我在 AWS Lightsail 上設置了一個新伺服器,一切都很好,但是在我的 LEMP 堆棧中,我安裝了 MySql 並創建了我的數據庫。出於某種原因,儘管我無法通過我的數據庫客戶端(使用 TablePlus)遠端訪問該數據庫。
在過去使用 Vultr 或 Digital Ocean 伺服器時,我必須將 IP 地址添加到
etc/mysql/mysql.conf.d/mysqld.cnf
文件中,如下所示:# bind-address = 127.0.0.1 bind-address = 34.xxx.xxx.xxx
這將允許我使用我的數據庫使用者名登錄並傳遞我創建的使用者名。
AWS Lightsail 是否不允許這樣做?他們有一個希望您購買的創建數據庫實例服務,但試圖在這方面保持便宜,並且只需要我在伺服器中建構的數據庫。
任何有關如何與數據庫客戶端遠端連接的幫助都將非常感激。
使用 Ubuntu 18.04 LTS
所以我想通了。如果有人遇到此問題,請嘗試以下操作。
AWS Lightsail 為您提供 2 個 IP
- 靜態 IP = 34.xxx.xxx.xxx
- 私有 IP = 172.xx.xx.xx
在您的
etc/mysql/mysql.conf.d/mysqld.cnf
文件中執行以下操作:# bind-address = 127.0.0.1 (Disable this) # bind-address = 34.xxx.xxx.xxx (Don't use Static IP) bind-address = 172.xx.xx.xx (Use Private IP)
在 AWS Lightsail 防火牆中添加
MySQL/Aurora | TCP | 3306
在伺服器上執行以下命令:
sudo service mysql stop sudo service mysql start
連接數據庫客戶端:
- 主機/套接字 = 34.xxx.xxx.xxx(使用靜態 IP)
- 埠 3306
- 使用者:admin(您創建的使用者帳戶(參見下文如何操作))
- 密碼 your_new_pass_here(您創建的密碼)
- 數據庫:mydatabase(您創建的數據庫名稱)
就是這樣。現在一切都應該工作了。
如下所述,您確實需要創建一個新的 MySql 使用者。你可以這樣做:
- 創建數據庫使用者,以便我們可以從本地機器/數據庫客戶端遠端訪問它:
mysql -u root -p'' (Login to MySql with the credentials you used to create MySql, -u might be different)
CREATE USER 'admin'@'34.xxx.xxx.xxx' IDENTIFIED BY 'your_new_pass_here'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'34.xxx.xxx.xxx' IDENTIFIED BY 'your_new_pass_here'; CREATE USER 'admin'@'%' IDENTIFIED BY 'your_new_pass_here'; GRANT ALL PRIVILEGES ON *.* TO 'admin' IDENTIFIED BY 'your_new_pass_here';
FLUSH PRIVILEGES;
- 綁定地址
要讓數據庫遠端工作,請轉到
/etc/mysql/mysql.conf/mysqld.cnf
並更改綁定地址:# bind-address = 127.0.0.1 (Disable this) # bind-address = 34.xxx.xxx.xxx (Don't use Static IP) bind-address = 172.xx.xx.xx (Use Private IP)
- 出口
service mysql restart
- (如果使用 Laravel,添加到新的 .env)
DB_CONNECTION=mysql DB_HOST=34.xxx.xxx.xxx DB_PORT=3306 DB_DATABASE=database_name DB_USERNAME=admin DB_PASSWORD=your_new_pass_here
如果您需要獲取 MySql 使用者的列表,請執行以下操作:
SELECT User FROM mysql.user;
有助於仔細檢查您的新使用者是否在系統中。