Ответ 1
TO 'user'@'%'
% - это подстановочный знак - вы также можете сделать '%.domain.com'
или '%.123.123.123'
и что-то в этом роде, если вам нужно.
Я знаю эту команду:
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
Но тогда он позволяет мне предоставлять конкретный IP-адрес для доступа к этой удаленной базе данных MySQL. Что делать, если я хочу, чтобы любой удаленный хост мог получить доступ к этой базе данных MySQL? Как мне это сделать? В основном я делаю эту базу данных открытой, чтобы каждый мог получить к ней доступ.
TO 'user'@'%'
% - это подстановочный знак - вы также можете сделать '%.domain.com'
или '%.123.123.123'
и что-то в этом роде, если вам нужно.
Включить удаленный доступ (грант) Главная/Учебники/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, это будет нормально. Это так же хорошо, как никакой привилегии. Я не уверен, можно ли его отозвать.
Предполагая, что вышеуказанный шаг завершен, и порт 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
Для тех, кто потрудился с этим, вот как я получил привилегии, надеюсь, что это поможет кому-то
GRANT ALL ON yourdatabasename.* TO [email protected]'%' IDENTIFIED BY
'yourRootPassword';
Как отмечено %
является подстановочным знаком, и это позволит любому IP-адресу подключиться к вашей базе данных. Предположение, которое я здесь делаю, - это когда вы подключаетесь, у вас будет пользователь с именем root
(который по умолчанию используется). Подайте корневой пароль, и вам хорошо идти. Обратите внимание, что у меня нет одиночных кавычек ('
) вокруг корня пользователя.
Изменения файла конфигурации необходимы для включения соединений через 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.
Используйте эту команду:
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
Работает для меня!
Выполните следующее:
$ 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
Вы должны иметь возможность подключиться.
Вы можете решить проблему MariaDB через эту команду:
GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'mysql root password';
%
является подстановочным знаком. В этом случае это относится ко всем IP-адресам.
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
/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
Если вы используете экземпляр EC2, не забудьте добавить входящие правила в группу безопасности с помощью MYSQL/Aurura.
Для удаленного доступа к базе данных Mysql server 8:
CREATE USER 'root'@'%' IDENTIFIED BY '[email protected]';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Чтобы иметь возможность подключиться к вашему пользователю с любого 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;
Надеюсь это поможет ;)
Просто создайте пользователя в какой-либо базе данных, например
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-адреса.
Откройте 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
Наслаждаться ;)
Вам нужно изменить файл конфигурации mysql:
Начните с редактирования файла конфигурации mysql
vim /etc/mysql/my.cnf
Добавить:
bind-address = 0.0.0.0
В панелях веб-сайтов, таких как cPanel, вы можете добавить единственный %
(процентный знак) в разрешенных именах хостов для доступа к вашей базе данных MySQL.
Добавив один %
, вы можете получить доступ к своей базе данных с любого IP или веб-сайта даже из настольных приложений.
Например, в моем CentOS
sudo gedit/etc/mysql/my.cnf
прокомментируйте следующие строки
# bind-address = 127.0.0.1
то
sudo service mysqld restart
Если вы хотите предоставить удаленный доступ к вашей базе данных с любого IP-адреса, выполните команду mysql и после этого выполните следующую команду.
GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
то, что работало в 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
Вы можете отключить всю безопасность, отредактировав /etc/my.cnf:
skip-grant-tables