it-roy-ru.com

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

Я в курсе этой команды:

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

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

238
adit
TO 'user'@'%'

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

234
Ariel

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

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

Изменить конфиг mysql

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

vim /etc/mysql/my.cnf

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

#bind-address           = 127.0.0.1
#skip-networking

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

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

Бонус-совет: отозвать доступ

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

Далее будут отменены все параметры для 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.

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

140
Sandhyalal Kumar

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

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

#nano /etc/mysql/my.cnf

В файле найдите блок [mysqld] section и добавьте новый адрес привязки, в данном примере это 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
36
Waqas

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

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

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

24
Dev

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

Чтобы подключиться через удаленные IP-адреса, войдите в систему как «пользователь root» и выполните следующие запросы в 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.

20
harishannam

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

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 

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

18
Tomasz Czechowski

Запустите следующее:

$ 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   

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

16
akhil.o.v

Вы можете решить проблему MariaDB с помощью этой команды :

Замечания:

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

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

14
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
8
user3846464

Правка файл:

/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:\Найти место инсатации\путь к файлу

4
Tejas Tank
  • НАЧАТЬ MYSQL с правами администратора
    • mysql -u admin-user -p (ВВОД ПАРОЛЯ НА ПРЕДЛОЖЕНИИ)
  • Создать нового пользователя:
    • СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'newuser' @ '%', ИДЕНТИФИЦИРОВАННОГО ПО «паролю»; (% -> любой хост)
  • Предоставить привилегии:
    • GRANT SELECT, DELETE, INSERT, UPDATE ON db_name. * TO 'newuser' @ '%';
    • ПРИВИЛЕГИИ ПРОМЫВКИ;

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

3
Rifaideen

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

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

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

FLUSH PRIVILEGES;
3
Anil Rana

Откройте свой 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

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

2
Usman Yousaf

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

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 = 0.0.0.0

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

2
Diogo Mendes

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

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

vim /etc/mysql/my.cnf

добавлять:

bind-address = 0.0.0.0
1
bhushan pardhi

Чтобы иметь возможность подключиться к вашему пользователю с любого 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;

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

1
Imtiaz Shakil Siddique

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

Судо Гедит /etc/mysql/my.cnf

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

# bind-address = 127.0.0.1

затем 

Перезапуск службы Sudo mysqld

0
zawhtut

то, что работало в 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
0
Miguel Mota

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

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

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

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

0
Muhammad Saqib