mysql5.7 安装后无法设置密码

版本以及操作系统:Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu-server)

尝试直接apt-get install mysql-server,安装过程中弹出让输入密码的框都直接回车。

安装好之后,输入mysql可以直接登陆数据库,尝试用mysqladmin -u root password "password"``来设置密码,弹出两条警告:

$ mysqladmin -u root password "123"
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

再次尝试登陆,还是可以直接输入mysql登陆(尝试过重启数据库)。

第二次尝试登陆进数据库,使用update mysql.user set authentication_string=PASSWORD('123123') where user='root';设置,然后刷新权限flush privileges;

再次尝试登陆,还是不用输任何密码就可以登陆成功(有重启数据库)

那么,现在问题来了:

我要怎样才能成功的给数据库设个密码呢?(除了在安装时弹出框里输入)

阅读 13.6k
4 个回答

官方文档这里有提示,你根据提示看看
https://dev.mysql.com/doc/mys...
仅对于MySQL 5.7:在服务器的初始启动时,出现以下情况,假定服务器的数据目录为空:
服务器已初始化。
SSL证书和密钥文件在数据目录中生成。
该 validate_password插件安装并启用。
'root'@'localhost' 创建 超级用户帐户。超级用户的密码被设置并存储在错误日志文件中。要显示它,请使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
通过使用生成的临时密码登录并为超级用户帐户设置自定义密码,尽快更改root密码:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
注意
默认情况下 安装MySQL的 validate_password插件。这将要求密码至少包含一个大写字母,一个小写字母,一个数字和一个特殊字符,并且总密码长度至少为8个字符。

试试使用 mysql_secure_installion

你的账号里面应该是有空账号 你并没有删除或者为这个空账号设置密码
delete from mysql.user where user='';flush privileges;
或者
update mysql.user set authentication_string=PASSWORD('123123');flush privileges;

新手上路,请多包涵

如果您安装5.7并且没有为root用户提供密码,它将使用auth_socket插件。该插件不关心,也不需要密码。它只检查用户是否使用UNIX套接字进行连接,然后比较用户名。

如果我们要配置密码,我们需要在同一命令中同时更改插件并设置密码。首先更改插件然后设置密码将不起作用,它将再次回退到auth_socket。所以,运行:

因此,正确的方法是运行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题