2016-11-18 1 views
1

Я пытаюсь создать простую базу данных mysql на сервере и другую базу данных на другом сервере, который подключается к ней.ERROR 1045 (28000): Доступ запрещен для пользователя (с использованием пароля: ДА)

Я сделал следующее:

  1. установлен MySQL-сервер
  2. создал базу данных
  3. Создано пользователю:

    CREATE USER админ @ 'локальный' ОПРЕДЕЛЕННЫЕ «админ «;

  4. Учитывая привилегию этого пользователя:

    GRANT всех привилегии confWeb * редактора @ '';.

  5. открыл BIND-адреса

Теперь, когда я запускаю команду mysql -u admin -p -h <address> с другого сервера, он просто говорит мне снова и снова:

ERROR 1045 (28000): Access denied for user 'admin'@'X.X.X.X' (using password: YES) 

Я действительно понятия не имею, что к сделайте в этой точке. Кажется, я все пробовал. Я попытался положить GRANT OPTION в конце линии GRANT, я пробовал разрешать множество разных адресов, но ничего не работало.

+2

Создан пользователь, привязанный к localhost, но вы подключаетесь к серверу, который не является локальным. –

ответ

5

В MySQL пользователь идентифицируется как пользователем, так и хозяин.

Пользователь:

[email protected] 

является не тот же пользователь, как

[email protected]'10.242.167.235' 

Как один из вариантов, вы могли бы сделать это, чтобы разрешить подключение:

GRANT USAGE ON *.* TO [email protected]'10.242.167.235' IDENTIFIED BY 'mysecret' ; 
    GRANT ALL ON confWeb.* TO [email protected]'10.242.167.235' ; 

Для более длительного обсуждения системы привилегий MySQL доступа, в том числе «маски», специальный смысл локального хоста, используя IP-адреса вместо имен хостов и т.д.

http://dev.mysql.com/doc/refman/5.7/en/privilege-system.html

+0

Я думаю, что ваш ответ может быть хорошим для того, что я написал, но я попытался сделать то, что вы сказали, и это все еще не сработало. Но я нашел решение, я отправлю его. – Licia

+0

И это не то же самое, что просто 'admin', по-видимому: https://dba.stackexchange.com/questions/191606/error-1045-28000-access-denied-for-user-myuserlocalhost-using-password – pyb

+1

@pyb: верный. учетная запись MySQL идентифицируется как * user *, так и * host *. Согласно Справочному руководству MySQL: «Имя * host * name имени учетной записи, если опущено, по умолчанию указано' '% ''. " https://dev.mysql.com/doc/refman/5.7/en/create-user.html Таким образом, указание «just' admin' »совпадает с указанием' admin @ '%' '. – spencer7593

-1

Я не знаю, почему, но appareantly , он работал, когда я использовал with grant option и сначала дал доступ к базе данных, а затем к ее таблицам. Вот список команд, которые я вошли:

mysql> create user 'admin'@'localhost' identified by 'admin'; 
mysql> grant all privileges on confWeb to 'admin'@'10.69.101.%' identified by 'admin' with grant option; 
mysql> grant all privileges on confWeb.* to 'admin'@'10.69.101.%' identified by 'admin' with grant option; 
mysql> flush privileges; 

Опять же, я не знаю, почему он не работал раньше, и ответы, которые я видел выглядеть всю документацию, я видел, но это выглядит моя проблема была где-то в другом месте.

+0

'' admin '@' localhost'' является полностью * другим * пользователем, чем '' admin '@' 10.69.101.% ''. И ни один из этих пользователей не будет «соответствовать» для соединения из '10.242.167.235'. Если соединение установлено из '10.242.167.235', то * ни один из двух пользователей, определенных операциями, показанными в этом ответе, не имеет никакого значения. https://dev.mysql.com/doc/refman/5.7/en/account-names.html – spencer7593

0

Используйте следующий шаг: -

CREATE USER 'user name'@'IP or % or localhost' IDENTIFIED BY 'password'; 

    GRANT all privileges ON *.* TO 'user name'@'IP or % or localhost' IDENTIFIED BY 'password' ; 
    flush privileges; 

Здесь, в месте "IP"; вы используете IP-адрес удаленного сервера, где вы хотите подключить сервер. Вы также можете использовать «%» для использования баз данных с любого plcae в мире.

Теперь, в опции Грант; Вместо «всех привилегий» вы можете получить доступ отдельно, например, выбрать, изменить, обновить и т. Д.