远程连接到 MySql AWS Lightsail

dau*_*d47 6 mysql ubuntu amazon-web-services amazon-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
Run Code Online (Sandbox Code Playgroud)

这将允许我使用我的数据库用户名登录并传递我创建的密码。

AWS Lightsail 不允许这样做吗?他们有一个创建数据库实例服务,他们希望您购买,但试图保持便宜,并且只需要我在服务器中构建的数据库。

任何有关如何远程连接数据库客户端的帮助将非常感激。

使用 Ubuntu 18.04 LTS

dau*_*d47 5

所以我想通了。如果有人遇到此问题,请尝试以下操作。

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)
Run Code Online (Sandbox Code Playgroud)

在 AWS Lightsail 防火墙中添加MySQL/Aurora | TCP | 3306

在服务器上运行以下命令:

sudo service mysql stop
sudo service mysql start
Run Code Online (Sandbox Code Playgroud)

连接数据库客户端:

  • 主机/套接字 = 34.xxx.xxx.xxx(使用静态 IP)
  • 端口3306
  • 用户:admin(您创建的用户帐户(请参阅下文如何执行此操作))
  • 密码 your_new_pass_here (您创建的密码)
  • 数据库:mydatabase(您创建的数据库名称)

就是这样。现在一切都应该可以了。


如下所述,您确实需要创建一个新的 MySql 用户。你可以这样做:

  1. 创建数据库用户,以便我们可以从本地计算机/数据库客户端远程访问它:
mysql -u root -p'' (Login to MySql with the credentials you used to create MySql, -u might be different)
Run Code Online (Sandbox Code Playgroud)

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';
Run Code Online (Sandbox Code Playgroud)
    3.
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
  1. 绑定地址

要使数据库远程工作,请转到/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)
Run Code Online (Sandbox Code Playgroud)
  1. 出口
  2. service mysql restart

  3. (如果使用 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
Run Code Online (Sandbox Code Playgroud)

如果您需要获取 MySql 用户的列表,请执行以下操作: SELECT User FROM mysql.user; 有助于仔细检查您的新用户是否在系统中。