Я настраиваю новый сервер на 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-адреса
В твоем 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
Подключение к клиенту БД:
Вот и все. Теперь все должно работать.
Как упоминалось ниже, вам действительно нужно создать нового пользователя 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';
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
(Добавьте в новый .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.