Mysql добавляет пользователя для удаленного доступа

Я создал пользователя [email protected]'%' с помощью password 'password. Но я не могу связаться с:

mysql_connect('localhost:3306', 'user', 'password');

Когда я создал пользователя [email protected]'localhost', мне удалось подключиться. Зачем? Не означает ли "%" от ЛЮБОГО хоста?

Ответ 1

Для удаленного подключения у вас должен быть привязанный порт MySQL 3306 к IP-адресу вашего компьютера в my.cnf. Затем вы должны создать пользователя с подстановочными знаками localhost и '%' и предоставить разрешения для всей БД как таковой. Смотрите ниже:

my.cnf(my.ini в Windows)

#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'@'%';
flush privileges;

В зависимости от вашей ОС вам может потребоваться открыть порт 3306, чтобы разрешить удаленные подключения.

Ответ 2

Следуйте инструкциям (шаги с 1 по 3 не нужны в окнах):

  • Найти конфигурацию 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, и если вы установите пароль для запуска root mysql -p):

    GRANT ALL PRIVILEGES 
     ON *.* TO 'remote'@'%' 
     IDENTIFIED BY 'safe_password' 
     WITH GRANT OPTION;`
    

Теперь у вас должен быть пользователь с именем user и паролем safe_password с возможностью удаленного подключения.

Ответ 3

для какой БД является пользователем? посмотрите на этот пример

mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to [email protected] 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

надеюсь, что это поможет