启用无密码访问 MySQL

启用无密码访问 MySQL

如何删除 MySQL 密码?我不想使用密码来连接数据库。我的服务器运行的是 Ubuntu。

答案1

就我个人而言,我认为最好设置密码并将其保存在 /root/.my.cnf 中:

第一的:

mysqladmin -u root password 'asdfghjkl'

然后编辑root的.my.cnf文件:

[client]
password = asdfghjkl

确保chmod 0600 .my.cnf

现在您有密码了,但系统不再提示您输入密码。我的默认 MySQL 服务器安装是每个 MySQL 服务器的完全随机的唯一密码,保存在 .my.cnf 文件中,如下所示。

答案2

是的,密码少是好事。但不要对每个人都开放数据库。

通过unix_socket:

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

这为本地登录的 root 用户提供了无密码的 mysql 访问权限。顺便说一句,这是最近的 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-hardening-tips

答案3

如果你确实为 MySQL 设置了密码,请按照以下说明操作恢复 MySQL root 密码,然后将密码设置为空:

对于 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

答案4

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;

虽然只相差两个词,但实际上它们并不相同。

相关内容