Linux 下通过sudo apt install mysql-server
装置的mysql,默认状况下,只能通过 root 用户或sudo
的形式能力登录到mysql的root
用户,而且无需明码,也无奈设置明码。
这是因为mysql默认对“mysql的root”用户应用auth_socket
插件的认证。对某个mysql用户应用这个插件,将会只容许在本机上和该mysql用户的用户名雷同的零碎用户登录,这种登录形式无需也无奈设置明码。换个说法就是,默认状况下,“mysql的root”用户,只容许本机上同样被称作“root”的用户登录,所以装置实现后必须通过sudo
或切换到root
用户能力登录“mysql的root”用户。
这种形式可能使某些人不习惯,为了让mysql的root用户,能像平常一样,通过任意零碎用户、任意主机登录,只需将mysql的root用户验证插件批改。
则是默认状况下,mysql的root用户应用auth_socket
插件验证,无奈设置明码。
MySQL root@(none):mysql> SELECT `User`,`Host`,plugin,authentication_string FROM `user`;+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+| User | Host | plugin | authentication_string |+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+| debian-sys-maint | localhost | caching_sha2_password | $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$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || root | localhost | auth_socket | |+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+
运行上面这条语句,将root账户的验证插件批改为caching_sha2_password
,并通过明码12345
登录
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '12345';
而后刷新权限使得设置失效
FLUSH PRIVILEGES;
设置实现后,
MySQL root@(none):mysql> SELECT `User`,`Host`,plugin,authentication_string FROM `user`;+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+| User | Host | plugin | authentication_string |+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+| debian-sys-maint | localhost | caching_sha2_password | $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$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || root | localhost | caching_sha2_password | $A$019$1^Ac!u@^Qto |+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+
这样就能够用明码登录mysql的root用户了。
有些教程会教你应用mysql_native_password
作为验证插件,这个是旧版本mysql提供的插件,应用中和caching_sha2_password
体验一样。如果不是要通过一些不兼容caching_sha2_password
的客户端连贯mysql服务端,显然还是用新插件更平安。