Назад | Перейти на главную страницу

Удаленное подключение к 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 Firewall добавьте 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. Сделать это можно так:

  1. Создайте пользователя БД, чтобы мы могли удаленно подключиться к нему с локальной машины / клиента базы данных:
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;
  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)
  1. выход
  2. service mysql restart

  3. (Добавьте в новый .env, если используете Laravel)

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; Полезно перепроверить, что ваш новый пользователь находится в системе.

Вам необходимо сообщить Lightsail, что порт MySQL должен быть общедоступным. Документация есть Вот.

Я сам не использовал Lightsail (я использую полный AWS), но посмотрю, можно ли добавить в белый список только свой конкретный IP-адрес, используя брандмауэр Lightsail или iptables в Linux.