不少小伙伴在建站的过程中经常会遇到一些莫名其妙的错误,比如在使用MySQL数据库的时候,经常会出现各类的问题,比如使用root用户密码登陆的时候,结果报错1045,无法登陆被拒绝了。那么如何解决这个问题呢?如果是BT宝塔面板的话,解决简单一点,这里就分享一下通过BT宝塔解决MySQL数据库登陆提示1045错误的解决办法。还没安装BT宝塔面板?点击如下安装:宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取MySQL在使用root密码登陆报错1045 ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)1、修改密码:登录到面板上修改MySQL数据库root用户的密码:如果修改后还不行,请根据下面的操作一步一步来。1、必须提前准备下面操作方可执行免密钥登录(否则会出现数据丢失)原因:为了安全 为了安全 为了安全(重要事情说三遍)操作方式:1、打开面板安装系统防火墙2、设置放行仅仅允许本机ip访问3306错误可能原因:1、有空用户的现象,MySQL官方的BUG,优先匹配到空用户2、权限错误一、空用户问题解决方法先修改下mysql的配置文件,设置免密钥登陆:skip-grant-tables然后重新启动mysql,/etc/init.d/mysqld restart在mysql命令行中执行下面命令:USE mysql;Delete FROM user Where User='' and Host='localhost';FLUSH PRIVILEGES;执行完后将刚才添加的skip-grant-tables 注释 然后重新启动mysql现在再用账号密码登陆就可以登陆进去了。二、MySQL root权限导致的无法登录1、同样是修改成免密码登录的方式:2、重启数据库:/etc/init.d/mysqld restart3.1、MySQL 5.6版本以及以下的更改root权限:UPDATE mysql.user set password=password('root 用户密码') WHERE user='root' AND host='localhost';
FLUSH PRIVILEGES;3.2、MySQL5.7版本以及以上的更改root密码和权限:小知识点:在MySQL5.7.9版本后废弃了password字段和password()函数,所以先将authentication_string设置为空然后在修改密码和权限,密码必须包含大写字母、数字、特殊符号这样才安全。1、将authentication_string 字段设置为空update user set authentication_string=” where user=’root’;2、然后退出MySQL命令行,删除/etc/my.cnf 中的 skip-grant-tables ,重启MySQL服务(/etc/init.d/mysqld restart)ALTER user 'root'@'localhost' IDENTIFIED BY '大写字母、数字、特殊符号';FLUSH PRIVILEGES;4、注销跳过密码登录的配置,删除系统防火墙中指定ip访问的配置(不要忘记这个步骤)然后重启mysql数据库,使用root登录就正常了说明:root用户使用localhost权限在linux默认中走的是Unix域套接字,在登录时候直接套接字进行通信,无需使用其他通信,127.0.0.1这个是使用的tcp/ip协议进行登录数据库的,所以在使用过程中,如果不在登录命令中加上 -h,默认是unix套接字。这也是 有些情况下使用远程登录工具可以正常登录,但是使用面板上的备份、计划任务中备份数据库 使用mysql -uroot -proot密码登录时候报1045 的原因
THE END