mysql 密码大小写_mysql对表名设置忽略大小写及后续改root密码问题

1.问题

部署了一个开源项目在服务器上,运行时报错表不存在···

在本地运行的好好的,数据库也是全量导过去的呀,仔细一想发现是不是大小写问题,一试果然。

c8a9fdf2f9dc

2.解决

linux下mysql默认是要区分表名大小写的,mysql是否区分大小写设置是由参数lower _ case _ table _ names决定的。

ower_case_table_names = 0

区分大小写(即对表名大小写敏感),默认是这种设置。

lower_case_table_names = 1

不区分大小写(即对表名大小写不敏感)

依次执行以下命令解决:

mysqladmin -uroot -p shutdown //以安全模式关闭数据库

vi /etc/mysql/mysql.conf.d/mysqld.cnf //添加下面一行设置

//······

lower_case_table_names=1

//······

service mysql start //启动数据库

哈哈,然后你就会发现启动不了。。。。太xx了。。。

查了资料发现8.0变态呀,这个配置需要在安装完成之后,初始化数据库之前进行改动,不然就会报错:

mysqladmin: connect to server at 'localhost' failed

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

简直太残忍。。

没得办法只能干掉数据重新设置(:

//首先停掉MySQL

mysqladmin -uroot -p shutdown

//删除 MySQL的数据 /var/lib/mysql

rm -rf /var/lib/mysql

//然后再进行上述操作即可。

3.修复

由于我们删除了/var/lib/mysql/目录,所以再启动mysql会重新初始化,这样你的root密码就不知道了,还得找回来呀。

//还得先停掉MySQL,这时不知道密码就不能使用安全停止了

sudo systemctl stop mysql

//然后类似设置忽略大小写,添加下面一行设置

vi /etc/mysql/mysql.conf.d/mysqld.cnf

//······

skip-grant-tables //设置不需要验证权限登录

//······

//启动数据库

sudo service mysql start

然后进去改密码

//使用mysql命令进去,回车两次即可

mysql -u root -p

//更改密码

use mysql

update user set authentication_string ='' where user ='root';

alter user 'root'@'localhost' identified with caching_sha2_password by 'password';

quit;

恢复校验,把刚刚添加的skip-grant-tables删除,重新启动;

填坑的路途很无奈呀···

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值