mysql忽略大小写 chmod_Ubuntu18.04下Mysql8.0.15关闭大小写敏感

再将Windows下面的Mysql中的数据迁移到Ubuntu下之后,EF提示找不到表。几经探索才发现Windows下面大小写不敏感,Linux下面Mysql大小写敏感。

按照官方文档提示将lower_case_table_names的值修改为1,但是重新启动Mysql报以下错误:

Job for mysql.service failed because the control process exited with error code.

See "systemctl status mysql.service" and "journalctl -xe" for details.

最终通过https://www.jianshu.com/p/d3cc28c3ed42这篇文章解决了问题,特此记录。

注意:在安装Mysql 8.0.15时测试通过,能通过此方法关闭表名大小写不敏感,但是在Mysql8.0.16下设置失败,无法启动Mysql。

一、安装Mysql

去https://dev.mysql.com/downloads/repo/apt/下载deb包。也可以用wget直接下载:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

sudo apt-get update

安装Mysql

sudo apt-get install mysql-server

选好之后选择OK退出

mysql忽略大小写 chmod_Ubuntu18.04下Mysql8.0.15关闭大小写敏感_第1张图片

选择认证方式,更具自己需要选择。

mysql忽略大小写 chmod_Ubuntu18.04下Mysql8.0.15关闭大小写敏感_第2张图片

查看服务是否启动

ps -ef | grep mysql

启动之后应该是这样的

mysql 29734 1 0 11:34 ? 00:00:10 /usr/sbin/mysqld

没有启动的话,手动启动

sudo service mysql restart

二、忽略表名大小写

如果使用默认安装路径,mysqldump命令直接使用。手动设置了安装目录,进入目录,终端 bin/mysqldump 代替 mysqldump

将初始库mysql导出到桌面,保存为mysqldump.sql文件,弹出提示时输入前面填写的root密码。

一定不要忘了这这步,最开始我是直接删除Mysql的数据存放目录。结果导致修改了lower_case_table_namesq启动数据没有用户之类的数据。

导出Myslq数据库mysqldump -h localhost -u root -p mysql > ~/mysqldump.sql

停止服务

sudo service mysql stop

删除 mysql的数据文件

sudo rm -rf /var/lib/mysql

创建同名文件夹并设置权限

sudo mkdir /var/lib/mysql

sudo chown -R mysql:mysql /var/lib/mysql

sudo chmod 750 /var/lib/mysql

编辑配置文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下添加lower_case_table_names=1

[mysqld]

lower_case_table_names=1

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

log-error = /var/log/mysql/error.log

然后手动初始化MySQL。

defaults-file默认安装路径为/etc/mysql/my.cnf,手动安装需要更改。

sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize lower_case_table_names=1 --user=mysql --console

再次查看/var/lib/mysql目录权限

ll -d /var/lib/mysql

如以下则没有问题

drwxr-x--- 5 mysql mysql 4096 12月 25 13:11 /var/lib/mysql/

如果群组和权限不一致再次执行

sudo chown -R mysql:mysql /var/lib/mysql

sudo chmod 750 /var/lib/mysql

重新开启数据库服务

sudo service mysql restart

登陆mysql,密码处直接回车

mysql -u root -p

此时没有密码,直接回车登录。

登录后查询是否更改

SHOW VARIABLES where Variable_name like 'lower%';

mysql> SHOW VARIABLES where Variable_name like 'lower%';

+------------------------+-------+

| Variable_name | Value |

+------------------------+-------+

| lower_case_file_system | OFF |

| lower_case_table_names | 1 |

+------------------------+-------+

2 rows in set (0.01 sec)

没有问题。

查看数据库

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

+--------------------+

3 rows in set (0.01 sec)

发现少了sys数据库。

切换到mysql库 ,导入前面导出的mysql库

mysql> use mysql

mysql> source /home/ubuntu/mysqldump.sql

Query OK, 0 rows affected (0.00 sec)

.....

.....

退出Mysql

mysql> exit;

Bye

执行mysql_upgrade命令创建sys库

sudo mysql_upgrade

登陆mysql测试,root密码是安装时设置的密码。

你可能感兴趣的:(mysql忽略大小写,chmod)