Я только что установил MySQL 5.5, и сразу после установки меня попросили установить пароль root, выполнив эти две команды:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h linux-opxd password 'new-password'
или
/usr/bin/mysql_secure_installation
Я выполнил первую команду - ОК. На этот раз я выполнил вторую команду с ошибкой:
ошибка: 'Доступ запрещен для пользователя' root '@' localhost '(с использованием пароля: NO)'
Я повторно выполнил первый (для проверки) - ошибка, как указано выше.
Итак, я выполнил mysql_secure_installation
. Все прошло нормально и мой пароль был признал. Итак, я снова выполнил первые две команды - и снова ошибка.
В качестве еще одной проверки:
mysql --user=root
Та же ошибка, что и выше.
Я пробовал сбросить пароль с аутентификацией mysql, также пробовал /usr/bin/mysql_upgrade -u root -p
- все еще ошибка при попытке запустить консоль mysql от имени root.
Итак, наконец, я отключил аутентификацию, подключился к консоли и выполнил это:
SELECT user();
Выход -- root@
. Если я подключаюсь так:
mysql --user='root@localhost'
я получу root@localhost@
.
Итак, на данный момент кажется, что это не проблема с привилегиями или отсутствием пароля или что-то в этом роде, а не распознавание пользователя, который был указан в командной строке - mysql добавляет @
в конце и это, кажется, проблема (по крайней мере, для моего глаза).
Возникает вопрос: как заставить MySQL распознавать данного пользователя?
Первая полученная вами ошибка:
ошибка: 'Доступ запрещен для пользователя' root '@' localhost '(с использованием пароля: NO)'
указывает, что вы, вероятно, не использовали параметр -p в команде mysql.
После того, как вы создали пароль root mysql, вы сможете получить доступ к MySql, используя:
mysql -u root -p
Вам будет предложено ввести пароль root MySql.
Если вы хотите разрешить доступ из какого-либо другого места (отличного от локального хоста), вы можете предоставить привилегии с помощью команд SQL GRANT, подобных этой:
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON databaseName.* TO 'username'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Аналогичным образом вы можете включить доступ к MySql DB с какого-либо другого имени хоста / IP-адреса или любого места, изменив 'username' @ 'localhost' на: 'username' @ 'someFQDN', 'username' @ 'IP_address', 'username '@'% '.
Для дополнительной информации рекомендую: http://dev.mysql.com/doc/refman/5.1/en/adding-users.html.
Ура!
Причина, по которой вы получаете сообщение об ошибке во второй команде mysqladmin, заключается в том, что вы не аутентифицируетесь на сервере, используя пароль, который вы установили в первой команде. Просто включите "-p" во вторую команду и введите пароль, когда его попросят. Или, что еще проще, просто используйте команду mysql_secure_installation, поскольку она позаботится об этом и еще кое-что полезное.