Я пытаюсь запустить 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 ответа2

1

В 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".)

0

Исходя из того, что вы сказали, я сделаю предположение, что ваш пользователь 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, сказать двум другим коллегам не должно быть большой проблемой, верно? Если бы это было так, я бы оценил методы коммуникации ваших компаний ....

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .