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):

  1. Найдите конфигурацию mysql для редактирования:

    /etc/mysql/my.cnf (Mysql 5.5)

    /etc/mysql/conf.d/mysql.cnf (Mysql 5.6+)

  2. найти bind-address=127.0.0.1 в изменении файла конфигурации bind-address=0.0.0.0 (вы можете установить адрес привязки для одного из ваших интерфейсов ips или как я использовать 0.0.0.0)

  3. Перезапустите службу MySQL, запустите на консоли:service restart mysql

  4. Создайте пользователя с безопасным паролем для удаленного подключения. Чтобы сделать это, запустите следующую команду в mysql (если вы являетесь пользователем linux для доступа к консоли mysql, запустите mysql и если вы установите пароль для запуска root mysql -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.

Другие вопросы по тегам