Как я могу удалить свой пароль для 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;
Разница всего в два слова, но на самом деле это не одно и то же.