Как MySQL разрешить пользователю root права на компьютере?

Я пытаюсь бежать mysqlcheck, Его неудача с:

$ sudo su -
# mysqlcheck --auto-repair --all-databases
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

Другие вопросы и ответы говорят, чтобы изменить или сбросить пароли MySQL. Я действительно не хочу этого делать, так как не знаю, как это повлияет. Если есть какие-то скрипты, использующие его, то я их сломаю. Как минимум, я должен поделиться этим с двумя другими [неполными] системными администраторами, так что это в основном боль.

Что бы мне хотелось, чтобы MySQL распознал пользователя root на компьютере (uid 0) и дал ему все привилегии, предоставленные root.

Я работаю над CentOS 7.2. Как я могу дать MySQL права root-пользователю?


Вот несколько связанных вопросов. Все они ведут к изменению пароля.

2 ответа

В MySQL 5.5+ вы можете использовать плагин auth_socket для аутентификации:

CREATE USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

MariaDB 5.2.0+ имеет аналогичный плагин unix_socket - насколько я знаю, он даже активен по умолчанию:

INSTALL PLUGIN unix_socket SONAME 'auth_socket';
CREATE USER root IDENTIFIED VIA unix_socket;

Аналогично, в PostgreSQL есть "локальный" метод аутентификации pg_hba.conf и включает его по умолчанию.

В Unix общий механизм часто называют peercred, как в SO_PEERCRED, (Эквивалент Windows часто называют "Собственной аутентификацией Windows".)

Исходя из того, что вы сказали, я сделаю предположение, что ваш пользователь MySQL 'root'@'localhost' имеет пароль, так как вы упомянули об обмене с другими людьми. И поэтому я предполагаю, что вы все еще знаете этот пароль.

Теперь давайте посмотрим, что говорит сообщение об ошибке:

Access denied for user 'root'@'localhost' (using password: NO)

Итак, я вижу, что вы пытаетесь подключиться к MySQL без предоставления пароля, в то время как у пользователя mysql есть пароль. Очевидно, что это не работает.

держу пари mysqlcheck --auto-repair --all-databases -p буду работать. Он попросит пароль, и вы должны быть в порядке.


Сказав все это, я настоятельно рекомендую не использовать учетную запись MySQL-root для других целей, кроме администрирования сервера MySQl (поскольку вы упомянули If there are any scripts using it), просто создайте другого пользователя MySQL для этого скрипта с соответствующими разрешениями. И если вам когда-нибудь действительно понадобится сбросить пароль root, сказать двум другим коллегам не должно быть такой большой проблемой, верно? Если бы это было так, я бы оценил методы коммуникации ваших компаний....

Другие вопросы по тегам