Linux mysql открыть порт

How to Allow MySQL remote connections in Ubuntu Server 18.04

This tutorial explains how to allow remote connections to the MySQL/MariaDB server on Ubuntu 18.04. The default behavior of the Ubuntu MySQL Server blocks all remote connections. Which prevent us from accessing the database server from the outside.

Note that to allow mysql remote connections we need to edit the MySQL main configuration file. If you are using MariaDB Database server, configuration file going to be «/etc/mysql/mariadb.conf.d/50-server.cnf», If you have installed MySQL Database server configuration file is: «/etc/mysql/mysql.conf.d/mysqld.cnf».

Open the /etc/mysql/mariadb.conf.d/50-server.cnf file (or /etc/mysql/mysql.conf.d/mysqld.cnf).

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

Under the [mysqld] section, locate the line:

Save the configuration file, and restart the MySQL server:

sudo systemctl restart mariadb
sudo systemctl restart mysql

Run the netstat command and make sure that mysql server listen on socket 0 0.0.0.0:3306.

sudo netstat -tulnp | grep mysqld

The output should be similar to the following:

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 622/mysqld

How it works..

By default the mysql daemon on Ubuntu 18.04 is only listening for connections on localhost (127.0.0.1), which mean you cannot login to the server from a remote computer. This setting is controlled by the bind-address in the MySQL/MariaDB configuration file. By default it is set to: «bind-address = 127.0.0.1» which prevents other hosts from accessing our mysql server.

To allow remote access, we changed the value of the bind-address to: «0.0.0.0».

By changing value to 0.0.0.0, we instruct MySQL to bind to all available interfaces and by doing that we allow remote connections to the MySQL Server on Ubuntu 18.04.

Читайте также:  Kvm установка astra linux

Open port 3306 from Ubuntu Firewall

UFW firewall is disabled by default in Ubuntu 18.04, so you don’t have to worry about opening mysql port 3306 if you didn’t enable UFW.

But if have enabled UFW then it will block the mysql remote access, so you need to add firewall rule to open the port 3306.

From a another Linux machine, you can run nmap against your server IP to check whether port 3306 is open or not.

Create Remote MySQL user and grant remote access to databases

Now that our MySQL server allows remote connections, we still need to have a mysql user that is allowed to access the server from outside the localhost. To create a mysql user that is allowed to connect from any host, login in the MySQL console and run:

CREATE USER 'username'@'%' IDENTIFIED BY 'new-password'; FLUSH PRIVILEGES;

Then you can grant access to databases using the GRANT ALL command:

GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%';

If you want to grant access to all databases on the server, run:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';

If you want to create a user that is only allowed to login from a specific host, replace ‘%’ with host IP or domain name when creating the user.

CREATE USER 'username'@'192.168.1.200' identified by 'new-password';

To test the connection, try to access the MySQL server from a remote computer:

mysql -h 192.168.1.100 -u username -p

Here 192.168.1.100 is the IP address of my Ubuntu Server where MySQL server is running.

Note that, enabling remote connections to MySQL server is not good practice from a security standpoint. So don’t expose your database server to outside unless you must, especially in a production environment.

Источник

Русские Блоги

Использование MySQL в среде Ubuntu / Linux: открыть / изменить порт 3306, открыть доступ

Операционная система: Ubuntu 17.04 64-bit

1. Проверьте, открыт ли порт 3306

Если вы видите следующую картинку, это означает, что порт не открыт:

Читайте также:  Отключить secret net linux

Во-вторых, измените права доступа

Введите каталог «etc / mysql / mysql.conf.d /», как показано ниже:

В этом каталоге находится файл конфигурации «mysqld.cnf», как показано ниже:

Откройте этот файл конфигурации:

После того, как файл открыт, есть большой раздел заметок, о котором вам не нужно беспокоиться об этом. Вы можете непосредственно увидеть часть на рисунке ниже:

Обратите внимание на красный комментарий в первой строке изображения выше:

«По умолчанию мы принимаем подключения только от localhost», эти слова означают «по умолчанию мы разрешаем только локальным службам доступ к MySQL», поэтому нам нужно закомментировать конфигурацию ниже и напрямую добавить Числовой знак:

Как показано ниже, эта конфигурация также стала комментарием:

Чтобы расширить размышления, если мы хотим ограничить доступ к MySQL только одному серверу приложений из соображений безопасности, нам необходимо настроить этот элемент конфигурации.

В-третьих, измените номер порта

Тем не менее этот файл конфигурации, смотрите элементы конфигурации в средней части этого файла конфигурации:

Нам нужно добавить конфигурацию порта к нему:

После добавления весь файл конфигурации выглядит так:

Не забудьте сохранить после изменения файла.

4. Откройте доступ к учетной записи root

На третьем этапе мы просто сняли ограничения локального доступа, но все равно не установили права доступа к учетной записи.

Перезапустите службу MySQL и войдите в консоль MySQL:

Переключитесь на системную базу данных «mysql»:

Просмотрите все таблицы в этой базе данных:

Мы хотим изменить последнюю таблицу «user» на рисунке выше и посмотреть, какие поля в этой таблице:

Есть так много полей, поэтому они не перечислены один за другим. Все, что нам нужно, это два поля «Host» и «User»:

select host,user from user;

В этой таблице мы видим, что пользователь root может обращаться к службе MySQL только локально, поэтому нам нужно изменить его на «%», что означает, что учетная запись root может обращаться к службе базы данных независимо от того, где она находится:

update user set host='%' where user='root';

Обратите внимание, что в реальной производственной среде это изменение не рекомендуется, поскольку риск безопасности слишком велик. Я предлагаю изменить элемент хоста пользователя root на указанный IP-адрес в соответствии с реальной ситуацией или по-прежнему поддерживать localhost

Читайте также:  Линукс минт очистить корзину

Последний параметр открывает все разрешения учетной записи root:

предоставить все права доступа *. * для пользователя root с идентификатором «пароль вашей учетной записи root»;

Сделайте так, чтобы различные настройки разрешений вступили в силу немедленно:

5. Подтвердите статус порта 3306 еще раз

Если вы видите следующую картинку, вы можете:

Источник

how to open port 3306

Amazon EC2 security rule allowing 3306 access

I’m trying to allow remote traffic to my mysql server. I changed my bind address in my mysqld.cnf to 0.0.0.0 , and ran sudo ufw allow 3306/tcp but I don’t think my port 3306 is allowing traffic. I’m trying to access the mysql server to store dev, staging and production.

Did you restart the mysql service after changing the configuration? How did you check whether it is listening?

Check if you not have —skip-networking option when mysql daemon starts. How to check: ps -ef | grep mysql and check used options. What you got, when run ss -tnpl | grep 3306 ?

ps -ef | grep mysql returns 7290 7273 0 14:02 pts/0 00:00:00 grep —color=auto mysql ss -tnpl | grep 3306 doesn’t return anything

1 Answer 1

Do this test from different sites in your infrastructure.

and then try to scan the database server like so:

From localhost/same machine do

From the same network/other machine close by do (e.G.)

If the first and second test go well, you have a problem with your router. This problem is then not Ubuntu-related anymore, but a problem with the router you use to connect to the internet.

If the first test fails, your port is completly closed and you have to work on your mysql conf again.

If the first succeeds and the second one fails, recheck that mysql really listens to 3306. Do a

Check that 0.0.0.0 is the source ip for port 3306/tcp. If that is the case you will have to recheck the settings with ufw. Disable the ufw for testing, to see if it makes a difference.

Источник

Оцените статью
Adblock
detector