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
надеюсь, что это поможет