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


149

Я создал пользователя user@'%'с расширением password 'password. Но не могу подключиться к:

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

Когда я создал пользователя user@'localhost', я смог подключиться. Зачем? Разве "%" не означает от ЛЮБОГО хоста?


Обратите внимание, что пароль для user @ localhost и user @% в целом различается, как и привилегии.
Хосе Мануэль Гомес Альварес

Ответы:


386

Для удаленного подключения MySQL должен привязать порт 3306 к IP-адресу вашего компьютера в my.cnf. Затем вы должны создать пользователя как в локальном хосте, так и в подстановочном знаке «%» и предоставить разрешения для всех БД как таковых . Увидеть ниже:

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, чтобы разрешить удаленные подключения.


1
Это помогло мне использовать частный экземпляр MySQL WebFaction. Я выполнил ваши шаги CREATE USER и GRANT ALL, заданные mysql.default_port = <private instance port>в моем php.ini, а затем использованные 127.0.0.1для моего имени хоста db
spex

Очень полезно. Просто комментарий. my.cnf может включать другой файл конфигурации, поэтому соответствующая строка может быть где-то еще. В my.cnf найдите строку, начинающуюся с! Include, если адрес привязки отсутствует в my.cnf, он может находиться в этом включенном файле.
tru7 05

Где находится файл my.cnf?
Владимир Деспотович

8
не забудьте ПРОМЫВИТЬ ПРИВИЛЕГИИ;)
volkovmqx

6
Почему и localhost, и%?
ночи

21

Следуйте инструкциям (шаги с 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(вы можете установить адрес привязки для одного из IP-адресов вашего интерфейса или, как я, использовать 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с возможностью удаленного подключения.


2
изменить адрес привязки = 0.0.0.0 ... это сработало для меня. и предоставить привилегии
zwitterion

12

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

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

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


в общем, для всех дб. Я просто хочу подключиться, а не выбирать БД. codemysql_connect ('localhost: 3306', 'пользователь', 'пароль'); code
user2333586

какая у вас ОС, Windows, Linux ??
apesa

окна. вамп сервер.
user2333586

Вам нужно будет убедиться, что ваш IP-адрес привязан к порту 3306. В Windows вы можете использовать netstat -n, чтобы увидеть, какие порты привязаны к вашему IP. Если вы видите 127.0.0.1:3306, вы не сможете подключиться ни с чего, кроме localhost
apesa
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.