一:默认root登录 Ubuntu在Mysql8。0在线安装成功后(sudoaptinstall),默认的root用户密码为空,默认监听本机,只能在本机登录,直接命令mysql即可登录。ubuntuserver:sudomysqlWelcometotheMySQLmonitor。Commandsendwith;org。YourMySQLconnectionidis17Serverversion:8。0。270ubuntu0。20。04。1(Ubuntu)Copyright(c)2000,2021,Oracleandoritsaffiliates。OracleisaregisteredtrademarkofOracleCorporationandoritsaffiliates。Othernamesmaybetrademarksoftheirrespectiveowners。Typehelp;orhforhelp。Typectoclearthecurrentinputstatement。mysql Centos安装完成后,可能需要密码,密码位置在greppasswordvarlogmysqld。log然后登录mysqlmysqlurootp 如果没有密码,或者忘记密码请在配置文件加入skipgranttables,ubuntu配置文件在etcmysql路径下。vimetcmy。cnf修改或添加skipgranttables跳过密码skipgranttables 注:跳过密码后,登录进入后必须先flushprivileges才能修改密码。 二:更改root密码方式 1:第一种方式 直接在用Linux命令mysqladmin修改。mysqladminurootpassword123456 ubuntuserver:sudomysqladminurootpassword123456mysqladmin:〔Warning〕Usingapasswordonthecommandlineinterfacecanbeinsecure。Warning:Sincepasswordwillbesenttoserverinplaintext,usesslconnectiontoensurepasswordsafety。提示警告密码简单不安全之类的信息,因为密码设置过于简单。 2:第二种方式 登录mysql更改密码ALTERUSERrootlocalhostIDENTIFIEDBY654321;将密码改为654321 显示ok成功。mysqlALTERUSERrootlocalhostIDENTIFIEDBY654321;QueryOK,0rowsaffected(0。00sec)mysql 注:由于我这里没有默认安装validatepassword插件,所以直接修改成功,有些默认安装的是修改不成功的,因为太简单的密码,不符合密码规则,会报错如下:ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequirements 3:关于validatepassword插件 validatepassword是一款密码规则插件,查看密码规则命令:没有安装会提示EmptysetSHOWVARIABLESLIKEvalidatepassword;没有的话,可自行安装validatepasswordINSTALLCOMPONENTfile:componentvalidatepassword; 安装完成后,查看显示如下:mysqlSHOWVARIABLESLIKEvalidatepassword;Emptyset(0。01sec)mysqlINSTALLCOMPONENTfile:componentvalidatepassword;QueryOK,0rowsaffected(0。00sec)mysqlSHOWVARIABLESLIKEvalidatepassword;VariablenameValuevalidatepassword。checkusernameONvalidatepassword。dictionaryfilevalidatepassword。length8validatepassword。mixedcasecount1validatepassword。numbercount1validatepassword。policyMEDIUMvalidatepassword。specialcharcount17rowsinset(0。00sec)mysql 参数说明:validatepassword。checkusername:默认值为ON,设置为ON的时候表示能将密码设置成当前用户名,密码用户名同名。validatepassword。dictionaryfile:用于检查密码的字典文件的路径名,默认为空validatepassword。length:密码的最小长度,也就是说密码长度必须大于或等于8validatepassword。mixedcasecount:默认值为1,至少有大小写字母n对,即2n个,默认值1(及至少包含1个大写字母和1个小写字母),密码策略是中等或更强的适用validatepassword。numbercount:默认值为1,密码必须包含的数字个数validatepassword。policy:默认值为MEDIUM,密码强度检验等级,可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。。0LOW:只检查长度。1MEDIUM:检查长度、数字、大小写、特殊字符。2STRONG:检查长度、数字、大小写、特殊字符、字典文件validatepassword。specialcharcount:默认值为1,密码必须包含的特殊字符个数 当指定密码规则后,如果嫌麻烦,直接更改密码规则即可,如偏要设置123456简单密码。密码强度改为LOWsetglobalvalidatepassword。policy0;密码长度改为至少4setglobalvalidatepassword。length4; 三:root无需密码,或任何密码都可以登录原因及解决方法 虽然改了密码,但是发现root登录仍无需登录密码,或者加参数p输入密码时,任何密码都可以进入。 原因:查看用户插件信息selectuser,host,pluginfrommysql。user; 显示root插件为authsocket,这种插件无需密码,所以设置任何密码都无效。mysqlselectuser,host,pluginfrommysql。user;userhostplugindebiansysmaintlocalhostcachingsha2passwordmysql。infoschemalocalhostcachingsha2passwordmysql。sessionlocalhostcachingsha2passwordmysql。syslocalhostcachingsha2passwordrootlocalhostauthsocket5rowsinset(0。00sec) 更改插件为mysqlnativepassword或者cachingsha2passwordusemysql;UPDATEuserSETplugincachingsha2passwordWHEREUserroot;FLUSHPRIVILEGES; 更改完成后,需重新设置root密码生效,修改方法同上。修改后,登录需要输入正确密码 注:为了提供更安全的密码加密,MySQL8。0的首选默认密码认证插件是cachingsha2password,而不是mysqlnativepassword,根据自己需求选择插件 关于authsocket插件 这种插件验证方式有以下特点:首先,这种验证方式不要求输入密码,即使输入了密码也不验证。这个特点让很多人觉得很不安全,实际仔细研究一下这种方式,发现还是相当安全的,因为它有另外两个限制;只能用UNIX的socket方式登陆,这就保证了只能本地登陆,用户在使用这种登陆方式时已经通过了操作系统的安全验证;操作系统的用户和MySQL数据库的用户名必须一致,例如你要登陆MySQL的root用户,必须用操作系统的root用户登陆。 authsocket这个插件因为有这些特点,它很适合我们在系统投产前进行安装调试的时候使用,而且也有相当的安全性,因为系统投产前通常经常同时使用操作系统的root用户和MySQL的root用户。当我们在系统投产后,操作系统的root用户和MySQL的root用户就不能随便使用了,这时可以换成其它的验证方式,可以使用下面的命令进行切换:ALTERUSERrootlocalhostIDENTIFIEDWITHcachingsha2passwordBYpassword;