Предоставлять удаленный доступ к базе данных MySQL с любого IP-адреса

Я знаю эту команду:

GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';

Но тогда он позволяет мне предоставлять конкретный IP-адрес для доступа к этой удаленной базе данных MySQL. Что делать, если я хочу, чтобы любой удаленный хост мог получить доступ к этой базе данных MySQL? Как мне это сделать? В основном я делаю эту базу данных открытой, чтобы каждый мог получить к ней доступ.

Ответ 1

TO 'user'@'%'

% - это подстановочный знак - вы также можете сделать '%.domain.com' или '%.123.123.123' и что-то в этом роде, если вам нужно.

Ответ 2

Включить удаленный доступ (грант) Главная/Учебники/Mysql/Разрешить удаленный доступ (грант) Если вы попытаетесь подключиться к серверу mysql с удаленной машины и выполните ошибку, как показано ниже, эта статья для вас.

ОШИБКА 1130 (HY000): Хост '1.2.3.4 не разрешен для подключения к этому Сервер MySQL

Измените конфигурацию mysql

Начните с редактирования файла конфигурации mysql

vim /etc/mysql/my.cnf

Прокомментируйте следующие строки.

#bind-address           = 127.0.0.1
#skip-networking

Если вы не найдете строку skip-network, добавьте ее и закомментируйте.

Перезагрузите сервер mysql.

~ /etc/init.d/mysql restart

Изменить привилегию GRANT

Вы можете быть удивлены, увидев даже после этого изменения, вы не получаете удаленный доступ или не получаете доступ, но не можете использовать все базы данных.

По умолчанию, имя пользователя и пароль mysql, которые вы используете, имеют доступ к локальному серверу mysql. Поэтому необходимо обновить привилегии.

Запустите команду, как показано ниже, для доступа ко всем машинам. (Замените USERNAME и PASSWORD своими учетными данными.)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

Выполните команду, как показано ниже, чтобы получить доступ к определенному IP-адресу. (Замените USERNAME и PASSWORD своими учетными данными.)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

Вы можете заменить 1.2.3.4 своим IP-адресом. Вы можете многократно выполнять команду выше для доступа к GRANT из нескольких IP-адресов.

Вы также можете указать отдельный USERNAME и PASSWORD для удаленного доступа.

Вы можете проверить окончательный результат:

SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";

Наконец, вам также может потребоваться запустить:

mysql> FLUSH PRIVILEGES;

Тестовое соединение

От терминала/командной строки:

mysql -h HOST -u USERNAME -pPASSWORD

Если вы получаете оболочку mysql, не забудьте запустить базы данных шоу; чтобы проверить, есть ли у вас права на удаленные компьютеры.

Бонусный совет: отменять доступ

Если вы случайно предоставляете доступ пользователю, тогда лучше отмените выбор.

После этого будут отменены все параметры USERNAME со всех компьютеров:

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.

Если вы видите привилегию USAGE после выполнения команды REVOKE, это будет нормально. Это так же хорошо, как никакой привилегии. Я не уверен, можно ли его отозвать.

Ответ 3

Предполагая, что вышеуказанный шаг завершен, и порт 3306 MySql доступен для удаленного доступа; Не забудьте связать публичный IP-адрес в конфигурационном файле mysql.

Например, на моем сервере ubuntu:

#nano /etc/mysql/my.cnf

В файле найдите раздел [mysqld] и добавьте новый адрес связывания, в этом примере это 192.168.0.116. Это будет выглядеть примерно так.

......    
.....    
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.

bind-address        = 127.0.0.1    
bind-address        = 192.168.0.116

.....    
......

вы можете удалить привязку localhost (127.0.0.1), если вы выберете, но тогда вам нужно конкретно указать IP-адрес для доступа к серверу на локальном компьютере.

Затем последний шаг - перезапустить сервер MySql (на ubuntu)

stop mysql

start mysql

или #/etc/init.d/mysql restart для других систем

Теперь к базе данных MySQL можно получить доступ удаленно:

mysql -u username -h 192.168.0.116 -p

Ответ 4

Для тех, кто потрудился с этим, вот как я получил привилегии, надеюсь, что это поможет кому-то

GRANT ALL ON yourdatabasename.* TO [email protected]'%' IDENTIFIED BY
'yourRootPassword';

Как отмечено % является подстановочным знаком, и это позволит любому IP-адресу подключиться к вашей базе данных. Предположение, которое я здесь делаю, - это когда вы подключаетесь, у вас будет пользователь с именем root (который по умолчанию используется). Подайте корневой пароль, и вам хорошо идти. Обратите внимание, что у меня нет одиночных кавычек (') вокруг корня пользователя.

Ответ 5

Изменения файла конфигурации необходимы для включения соединений через localhost.

Чтобы подключиться через удаленные IP-адреса, войдите в систему как "корневой" пользователь и запустите следующие запросы в mysql.

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

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

FLUSH PRIVILEGES;

Это создаст нового пользователя, доступного как на локальном, так и на удаленных IP-адресах.

Также прокомментируйте следующую строку из файла my.cnf, расположенного в файле /etc/mysql/my.cnf

bind-address = 127.0.0.1

Перезагрузите mysql, используя

sudo service mysql restart

Теперь вы можете подключиться удаленно к вашему mysql.

Ответ 6

Используйте эту команду:

GRANT ALL ON yourdatabasename.* TO [email protected]'%' IDENTIFIED BY 'yourRootPassword';

Затем:

FLUSH PRIVILEGES; 

Затем закомментируйте следующую строку в файле "/etc/mysql/mysql.conf.d/mysqld.cnf" (обязательно!):

bind-address = 127.0.0.1 

Работает для меня!

Ответ 7

Выполните следующее:

$ mysql -u root -p      
mysql> GRANT ALL ON *.* to [email protected]'ipaddress' IDENTIFIED BY 'mysql root password';     
mysql> FLUSH PRIVILEGES;     
mysql> exit

Затем выполните попытку подключения с указанного вами IP-адреса:

mysql -h address-of-remove-server -u root -p   

Вы должны иметь возможность подключиться.

Ответ 8

Вы можете решить проблему MariaDB через эту команду:

Примечание:

GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'mysql root password';

% является подстановочным знаком. В этом случае это относится ко всем IP-адресам.

Ответ 9

GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'

Ответ 10

Редактировать файл:

/etc/mysql/percona-server.cnf

Добавить ниже код в файл.

[mysqld] bind-address = 0.0.0.0

Создайте пользователя для удаленного доступа.

$ mysql -u root -p      
mysql> GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'tejastank';   
mysql> FLUSH PRIVILEGES;    
mysql> exit

Работает весь сервер Linux,

Для MSWin c:\Поиск местоположения insatallation\путь к файлу

Ответ 11

  • START MYSQL с помощью администратора
    • mysql -u admin-user -p (ВВЕДИТЕ ПАРОЛЬ НА ПРОМПТ)
  • Создайте нового пользователя:
    • СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'newuser' @'%' IDENTIFIED BY 'password'; (% → anyhost)
  • Привилегии гранта:
    • GRANT SELECT, DELETE, INSERT, UPDATE ON db_name. * TO 'newuser' @'%';
    • ПРИВИЛЕГИИ FLUSH;

Если вы используете экземпляр EC2, не забудьте добавить входящие правила в группу безопасности с помощью MYSQL/Aurura.

Ответ 12

Для удаленного доступа к базе данных Mysql server 8:

CREATE USER 'root'@'%' IDENTIFIED BY '[email protected]';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Ответ 13

Чтобы иметь возможность подключиться к вашему пользователю с любого IP-адреса, выполните следующие действия:

Разрешить MySQL серверу принимать удаленные подключения. Для этого откройте файл mysqld.conf:

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

Найдите строку, начинающуюся с "bind-address", и установите для нее значение 0.0.0.0.

bind-address                    = 0.0.0.0

и, наконец, сохранить файл.

Теперь перезапустите сервер mysql, либо с помощью systemd, либо с помощью более старой service команды. Это зависит от вашей операционной системы:

sudo systemctl restart mysqld.service

Наконец, сервер MySQL теперь может принимать удаленные подключения.

Теперь нам нужно создать пользователя и предоставить ему разрешение, чтобы мы могли иметь возможность удаленного входа в систему с этим пользователем.

Подключитесь к базе данных MySQL как пользователь root или любой другой пользователь с привилегиями root.

mysql -u root -p

Теперь создайте нужного пользователя в подстановочных знаках localhost и '%' и предоставьте разрешения для всей БД как таковой.

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

Затем,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

И, наконец, не забудьте сбросить привилегии

FLUSH PRIVILEGES;

Надеюсь это поможет ;)

Ответ 14

Просто создайте пользователя в какой-либо базе данных, например

GRANT ALL PRIVILEGES ON <database_name>.* TO '<username>'@'%' IDENTIFIED BY '<password>'

Затем перейдите к

sudo nano/etc/mysql/mysql.conf.d/mysqld.cnf и изменить адрес bind-address = 127.0.0.1 строки bind-address = 127.0.0.1 на bind-address = 0.0.0.0

После этого вы можете подключиться к этой базе данных с любого IP-адреса.

Ответ 15

Откройте mysql console и выполните следующую команду (введите имя базы данных, имя пользователя и пароль):

Предоставить все на имя вашей базы данных. * Для admin @'%', идентифицированного как 'yourRootPassword';

Затем выполните:

ПРИВИЛЕГИИ ПРОМЫВКИ;

Откройте командную строку и откройте файл /etc/mysql/mysql.conf.d/mysqld.cnf используя любой редактор с root privileges.

Например:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Затем закомментируйте следующую строку:

bind-address = 127.0.0.1

Перезапустите mysql, чтобы отразить изменения, используя команду:

sudo service mysql restart

Наслаждаться ;)

Ответ 16

Вам нужно изменить файл конфигурации mysql:

Начните с редактирования файла конфигурации mysql

vim /etc/mysql/my.cnf

Добавить:

bind-address = 0.0.0.0

Ответ 17

В панелях веб-сайтов, таких как cPanel, вы можете добавить единственный % (процентный знак) в разрешенных именах хостов для доступа к вашей базе данных MySQL.

Добавив один %, вы можете получить доступ к своей базе данных с любого IP или веб-сайта даже из настольных приложений.

Ответ 18

Например, в моем CentOS

sudo gedit/etc/mysql/my.cnf

прокомментируйте следующие строки

# bind-address = 127.0.0.1

то

sudo service mysqld restart

Ответ 19

Если вы хотите предоставить удаленный доступ к вашей базе данных с любого IP-адреса, выполните команду mysql и после этого выполните следующую команду.

GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%' 
IDENTIFIED BY 'password' 
WITH GRANT OPTION;

Ответ 20

то, что работало в Ubuntu, это предоставление пользователю всех привилегий:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

и установить адрес привязки в /etc/mysql/mysql.conf.d/mysqld.cnf:

bind-address            = 0.0.0.0

затем перезапускаем демон mysql:

service mysql restart

Ответ 21

Вы можете отключить всю безопасность, отредактировав /etc/my.cnf:

skip-grant-tables