踩过了坑,避免其他人踩坑,分享一下在mysql8 非初装的情况下实现数据表区分大小写。
原因:我们引入了开源工作流,在windows下和阿里云数据库没有问题,但在客户系统中出现了问题:工作流引擎使用了大写的数据表名,但是创建的数据库表都是小写字母,工作流引擎配置了根据反射自动创建和更新数据库结构,结果出现了创建了一些大写的数据表名,并出现初始化错误。
- 修改前一定要备份数据库!!!
- 停止服务:systemctl stop mysqld
- 备份myslq的备份文件:cp /etc/my.cnf /etc/my_01.cnf
- 修改配置文件:vi /etc/my.cnf
4.1添加区分大小写配置: lower_case_table_names=1
4.2修改数据库文件的存储目录:datadir=/var/lib/mysqldata
如果不执行3.2修改数据库文件存储目录,请将源目录里的文件全部删除:sudo rm -rf /var/lib/mysql/*
5. 创建配置文件中配置的数据库存储目录并赋予mysql权限:
创建配置数据库存储目录:mkdir /var/lib/mysqldata
变更数据库存储目录的所有者权限: chown -R mysql:mysql /var/lib/mysqldata
6.初始化数据库:mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysqldata
7. 变更数据库存储路径还要执行下面的步骤一面权限不够
chcon -R -t mysqld_db_t /var/lib/mysqldata
chmod -R 777 /var/lib/mysqldata/auto.cnf
8. 启动mysql及查看服务状态: systemctl start mysqld
systemctl status mysqld
9. 查看(重新初始化数据库后)初始密码并登录:
sudo grep 'temporary password' /var/log/mysqld.log
使用最新的初始密码,有特殊字符的登录是密码要用单引号括起来:
2023-11-10T10:21:34.927910Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: enaiC)qaE34j
2024-04-07T06:32:31.903800Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ng-G<fVbT2Mp
mysql -p'ng-G<fVbT2Mp'
10. 修改密码查看配置是否生效:
登录后,修改密码后才能查看配置的数据表名区分大小写配置是否有效
ALTER USER 'root'@'localhost' IDENTIFIED BY 'QbC12!..';
FLUSH PRIVILEGES;
11. 查看配置是否生效:show variables like '%case%';
已生效显示如下:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
12. root账号允许远程访问:
update user set host='%' where user='root';
flush privileges;
13. 现在可以远程连接了
如果没有连接成功,则要考虑是否是防火墙阻止了3306(默认端口是3306,根据实际情况看i放自己的mysql端口)
查看防火墙是否开放3306端口
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --query-port=3306/tcp
yes
[root@localhost ~]#
#开通3360端口 命令
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]#
#查看所有开放的端口
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --zone=public --list-ports
3306/tcp
吃水不忘挖井人,本文参考了以下博客文章:
MySQL8.0安装后更改不区分大小写!包你必生效!_mysql8取消大小写限制-CSDN博客