linux-deploy 安装MySQL,报错解决 ERROR 1054 (42S22) at line 1: Unknown column 'password' in 'where clause'

报错:


 ERROR 1054 (42S22) at line 1: Unknown column 'password' in 'where clause'

很诡异的错误。。。能正常启动和登入
error.log 中没有错误提示

查找原因:

启用一般日志
vi /etc/mysql/mysql.conf.d/mysqld.cnf
将general_log=1 注释去掉 

登入mysql  
命令 show variables like 'general%'
查看一般日志已启用,我的已被关闭请无视,并获得日志保存地址

查看一般日志:
vi /var/lib/mysql/localhost.log
看到如下命令:
 SELECT count(*) FROM mysql.user WHERE user='root' and password=''


这也解释了为什么会报这个错

原因分析:这是在做启动mysql的一个root账户检查,但是由于5.7以后mysql.user表中的password字段被修改为了authentication_string,但是这个sql语句并没有更改,所以报错。。。。

所以解决办法就是找到这个sql语句,将其中的password 改为authentication_string 就可以了


方法:
打开配置文件下的debian-start
vi /etc/mysql/debian-start
如图:

check_root_accounts
其中一个方法为,将该命令注释掉, 但是不完美,,
我们的目的是修改sql 语句,该文件中有个source 文件
用vi 打开该source文件

vi /usr/share/mysql/debian-start.inc.sh

找到check_root_accounts 这个函数

将password 改为authentication_string

我这是已修改过的
保存退出,
重启后再也没有error 1504了
而且从general日志中也可以看到,
如果不修该语句,check_for_crashed_tables,也不会执行


最后别忘了关闭general日志,将general_log=1 注释掉即可

end!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值