Linux下通过sudoaptinstallmysql-server安装的mysql,默认情况下只能通过root用户或sudo登录mysql的root用户,并且不需要密码,也不能设置密码。这是因为mysql默认使用auth_socket插件对“mysqlroot”用户的身份验证。mysql用户使用本插件将只允许与本机mysql用户同名的系统用户登录,这种登录方式不需要也不能设置密码。换句话说,默认情况下,“mysqlroot”用户只允许本机也称为“root”的用户登录,所以安装完成后,必须使用sudo或者切换到root用户才能登录登录到“mysqlroot”用户。这种方法可能会让一些人不习惯。为了让mysqlroot用户照常通过任意系统用户和任意主机登录,只需要修改mysqlroot用户认证插件即可。mysql的root用户默认使用auth_socket插件认证,不能设置密码。MySQLroot@(none):mysql>SELECT`User`,`Host`,plugin,authentication_stringFROM`user`;+----------------+----------+------------------------+------------------------------------------------------------------------+|用户|主持人|插件|authentication_string|+----------------+------------+----------------------+--------------------------------------------------------------------------+|debian-系统维护|本地主机|缓存_sha2_密码|$A$005$P|x1^Ew^A^A^X`\rNk(N^GR9HPKy4yvB.RcWyyDuPMHGIrVSXzTjGR5BeZC85qTUP3||mysql.infoschema|localhost|caching_sha2_password|$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED||mysql.session|localhost|caching_sha2_password|$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED||mysql.sys|localhost|caching_sha2_pas剑|$A$005$这是一个绝不能使用的无效盐和密码的组合||根|本地主机|--------------------+---------------------------------------------------------------------------+运行如下语句,修改root账户的验证插件为caching_sha2_password,密码12345登录ALTERUSER'root'@'localhost'IDENTIFIEDWITHcaching_sha2_passwordBY'12345';然后刷新权限使设置生效FLUSHPRIVILEGES;设置完成后,MySQLroot@(none):mysql>SELECT`User`,`Host`,plugin,authentication_stringFROM`user`;+----------------+-----------+--------------------+--------------------------------------------------------------------------+|用户|主持人|插件|authentication_string|+----------------+-------------+----------------------+----------------------------------------------------------------------------+|debian-系统维护|本地主机|缓存_sha2_密码|$A$005$P|x1^Ew^A^A^X`\rNk(N^GR9HPKy4yvB.RcWyyDuPMHGIrVSXzTjGR5BeZC85qTUP3||mysql.infoschema|localhost|caching_sha2_password|$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED||mysql.session|localhost|caching_sha2_password|$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED||mysql.sys|localhost|caching_sha2_password|$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTHATMUSTHATMUSTHATMUST||root|localhost|caching_sha2_password|$A$019$1^Ac!u@^Qto|+------------------+------------+------------------------+-------------------------------------------------------------------------------+这样就可以用密码登录mysql的root用户了一些教程会教你使用mysql_native_password作为验证插件。这是老版本mysql提供的插件。和caching_sha2_password在使用上的体验是一样的。如果不是需要通过一些不兼容caching_sha2_password的客户端连接mysql服务器,使用新插件显然更安全。
