Назад | Перейти на главную страницу

Создание суперпользователя в MySQL 5.5 не работает: для root @ localhost отказано в разрешении

Используя CentOS 6, вы вошли в MySQL как root, введя команду:

create user 'user123' identified by 'pass123';

работает отлично. Но когда я пытаюсь дать этому пользователю super user privileges с участием:

grant all on *.* to 'user123' identified by 'pass123';

Я получаю сообщение об ошибке:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

затем

select * from mysql.user;

показывает, что у root есть Y во всех столбцах, поэтому он должен иметь все привилегии.

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

Спасибо

Привилегии в MySQL привязаны как к имени пользователя и «хозяин». Хост может быть доменным именем, IP-адресом или localhost. Любой из них может включать подстановочный знак %. Если вы подключаетесь из неправильного места, даже с правильным именем пользователя и паролем, вы все равно получите сообщение об отказе в разрешении.

Каждый из этих разных пользователей может иметь разный доступ к разным базам данных, таблицам, строкам и командам.

Также стоит отметить, что 127.0.0.1 - это не то же самое, что localhost, поскольку используется mysql клиент в командной строке будет использовать сокет, а не IP для подключения. Если вы хотите использовать IP для подключения при использовании mysql клиент на сервере MySQL, вы можете указать -h <IP address>.

Чтобы увидеть всех разных «пользователей»:

SELECT user,host,password FROM mysql.user;

В конце концов, пришлось обойти таблицы грантов. Посмотреть здесь:

https://stackoverflow.com/questions/10130296/mysql5-as-root-cant-create-database-or-do-anything-access-denied

о том, как это сделать