我正在 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 不允许这样做吗?他们有一个创建数据库实例服务,希望您购买,但他们试图节省成本,只需要我在服务器中构建的数据库。
如果能就如何远程连接 DB 客户端提供任何帮助,我将不胜感激。
使用 Ubuntu 18.04 LTS
答案1
所以我找到了答案。如果有人遇到此问题,请尝试以下操作。
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)
2.
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';
-
3.
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;
有助于仔细检查您的新用户是否在系统中。
答案2
您需要告诉 Lightsail,MySQL 端口应公开可用。文档是这里。
我自己没有使用过 Lightsail(我使用完整的 AWS),但看看您是否可以使用 Lightsail 防火墙或使用 Linux 上的 iptables 将您的特定 IP 列入白名单。