Mysql добавление пользователя для удаленного доступа
Я создал пользователя user@'%'
с password 'password
, Но я не могу связаться с:
mysql_connect('localhost:3306', 'user', 'password');
Когда я создал пользователя user@'localhost'
Я смог подключиться. Зачем? Не означает ли "%" ЛЮБОЙ хост?
5 ответов
Для удаленного подключения у вас должен быть привязанный порт MySQL 3306 к IP-адресу вашей машины в my.cnf. Затем необходимо создать пользователя с подстановочными знаками localhost и '%' и предоставить разрешения для всех БД как таковых . Увидеть ниже:
my.cnf (my.ini на окнах)
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
затем
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
затем
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
В зависимости от вашей ОС может потребоваться открыть порт 3306, чтобы разрешить удаленные подключения.
Следуйте инструкциям (шаги с 1 по 3 не нужны в Windows):
Найдите конфигурацию mysql для редактирования:
/etc/mysql/my.cnf (Mysql 5.5)
/etc/mysql/conf.d/mysql.cnf (Mysql 5.6+)
найти
bind-address=127.0.0.1
в изменении файла конфигурацииbind-address=0.0.0.0
(вы можете установить адрес привязки для одного из ваших интерфейсов ips или как я использовать 0.0.0.0)Перезапустите службу MySQL, запустите на консоли:
service restart mysql
Создайте пользователя с безопасным паролем для удаленного подключения. Чтобы сделать это, запустите следующую команду в mysql (если вы являетесь пользователем linux для доступа к консоли mysql, запустите
mysql
и если вы установите пароль для запуска rootmysql -p
):GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;`
Теперь у вас должен быть пользователь с именем user
и пароль safe_password
с возможностью удаленного подключения.
Для какой БД это пользователь? посмотрите на этот пример
mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to cmsuser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
поэтому, чтобы ответить на ваш вопрос, оператор "%" означает все компьютеры в вашей сети.
как показывает aspesa, я также уверен, что вы должны создать или обновить пользователя. ищите всех ваших пользователей mysql:
SELECT user,password,host FROM user;
как только вы настроите своего пользователя, вы сможете подключиться так:
mysql -h localhost -u gmeier -p
Надеюсь, поможет
Я использовал существующего пользователя, у которого был пароль с помощью mysql_navtive_password
CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
Скорее, чем
CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';
таким образом не смог подключиться. Удаление старого и создание нового без mysql_native_password помогло
Альтернативный способ - использовать MySql Workbench. Перейдите в раздел «Администрирование» -> «Пользователи и привилегии» -> и измените «localhost» на «%» в атрибуте «Ограничить сопоставление хоста» (с хоста) для пользователей, которым вы не хотите предоставлять удаленный доступ. Или создайте нового пользователя (кнопка «Добавить учетную запись») с помощью « % 'в этом атрибуте вместо localhost.