Я только что установил свежую копию Ubuntu 10.04.2 LTS на новую машину. Я вошел в MySQL как пользователь root:
david@server1:~$ mysql -u root -p123
Я создал нового пользователя с именем repl. Я оставил хост пустым, чтобы новый пользователь мог иметь доступ из любого места.
mysql> CREATE USER 'repl' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)
Я проверил таблицу пользователей, чтобы убедиться, что новый пользовательский репл был правильно создан.
mysql> select host, user, password from mysql.user;
+-----------+------------------+-------------------------------------------+
| host | user | password |
+-----------+------------------+-------------------------------------------+
| localhost | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| server1 | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| 127.0.0.1 | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| ::1 | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| localhost | | |
| server1 | | |
| localhost | debian-sys-maint | *27F00A6BAAE5070BCEF92DF91805028725C30188 |
| % | repl | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+------------------+-------------------------------------------+
8 rows in set (0.00 sec)
Затем я выхожу, попробуйте войти как пользователь repl, но доступ запрещен.
david@server1:~$ mysql -u repl -p123
ERROR 1045 (28000): Access denied for user 'repl'@'localhost' (using password: YES)
david@server1:~$ mysql -urepl -p123
ERROR 1045 (28000): Access denied for user 'repl'@'localhost' (using password: YES)
david@server1:~$
Почему доступ запрещен?
Ответы:
Причина, по которой вы не можете войти
repl@'%'
, связана с протоколом аутентификации пользователя MySQL . Он не охватывает шаблоны пользователей, как можно было бы поверить.Посмотрите, как вы пытались зайти
Поскольку вы не указали IP-адрес, mysql предполагает, что host является localhost, и пытается подключиться через файл сокета. Вот почему сообщение об ошибке говорит
Access denied for user 'repl'@'localhost' (using password: YES)
.Казалось бы
repl@'%'
, позволитrepl@localhost
. В соответствии с тем, как MySQL выполняет аутентификацию пользователя , этого никогда не произойдет. Поможет ли это?Хотите верьте, хотите нет, но mysql попытается
repl@localhost
снова. Почему? Клиент MySQL видит127.0.0.1
и пытается файл сокета снова.Попробуйте это так:
Это заставит клиента mysql явно использовать протокол TCP / IP. Тогда у него не будет другого выбора, кроме как для пользователя
repl@'%'
.источник
Вы должны выпустить для localhost, специфичных для него.
И попробуйте подключиться.
источник
Проблема в том, что эти две учетные записи добавлены по умолчанию.
http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html
Пустое имя пользователя является подстановочным знаком, поэтому независимо от того, какую учетную запись вы используете, он подходит этому пользователю, если MySQL считает, что вы подключаетесь с локального хоста или с вашего локального имени сервера (в данном случае server1) ... так как у них нет пароля, любой неверный пароль Аутентификация пользователя пробует только первое совпадение, поэтому созданного вами пользователя никогда не заметят, когда вашим хостом является localhost (или имя вашего сервера).
Удалить эти два из
mysql
.user
стол, а затемFLUSH PRIVILEGES;
.Или сценарий mysql_secure_installation может сделать это для вас, хотя я предпочитаю делать вещи вручную.
http://dev.mysql.com/doc/refman/5.5/en/mysql-secure-installation.html
источник
Убедитесь, что все поля в соединителе установлены с правильными данными
host = "localhost", user = "CorrectUser", passwd = "coRrectPasswd", база данных = "CorreCTDB"
Также проверьте наличие ошибок в верхнем и нижнем регистре - 1045 не является ошибкой синтаксиса, но имеет отношение к неверным деталям в соединителе
источник
Возможно, база данных еще не настроена, просто выполните вызов без аргументов:
Если Mysql должен быть установлен пароль root, вы можете использовать
источник
Это может быть причиной повреждения вашей базы данных mysql. Таблицы в базе данных mysql, такие как пользовательская таблица, могут испортиться и стать причиной появления.
Пожалуйста, проверьте эти
myisamchk / var / lib / mysql / mysql / * .MYI
Обычно при проверке или исправлении таблиц myisam мы хотели бы сначала отключить mysql. Если эта проблема все еще не решена, пожалуйста, попробуйте это также.
Если они повреждены, вы можете исправить их, используя
myisamchk --silent --force --fast /path/table-name.MYI
Спасибо,
Масуд
источник