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

Включить беспарольный доступ к MySQL

Как я могу удалить свой пароль для MySQL? Я не хочу иметь пароль для подключения к базе данных. На моем сервере работает Ubuntu.

Лично я считаю, что лучше установить пароль и сохранить его в /root/.my.cnf:

Первый:

mysqladmin -u root password 'asdfghjkl'

Затем отредактируйте файл root .my.cnf:

[client]
password = asdfghjkl

Убедись в chmod 0600 .my.cnf.

Теперь у вас есть пароль, но он больше не запрашивается. Моя установка сервера MySQL по умолчанию - это полностью случайный уникальный пароль для каждого сервера MySQL, сохраненный в файле .my.cnf следующим образом.

Да, меньше паролей - это хорошо. Но не открывайте базу данных для всех.

через unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Это дает вам доступ к mysql без пароля для локально вошедшего в систему пользователя root. Кстати. это значение по умолчанию в последних выпусках ubuntu / debian.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Пояснительные слайды: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-harpting-tips.

Если у вас ДЕЙСТВИТЕЛЬНО установлен пароль для MySQL, следуйте инструкциям на Восстановить корневой пароль MySQL, а затем установите для своего пароля значение null:

Для 5.7.6 и новее

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

Для 5.7.5 и ранее

update user set password=PASSWORD("") where User='root';

* требуется перезапуск БД (см. инструкции по ссылке), чтобы это вступило в силу.

sudo service mysql restart

Вы также можете:

grant all privileges on *.* to 'root'@'localhost' identified by '';

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

Это работает?

#> mysqladmin -u root password ''

В IDENTIFIED VIA unix_socket заявление только для MariaDB.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket;

Для MySQL то же самое достигается IDENTIFIED WITH auth_socket.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED WITH auth_socket;

Разница всего в два слова, но на самом деле это не одно и то же.