mysql - 在 CentOS 7 上使用 lower_case_table_names 设置 mysql 8
问题描述
我正在尝试在 centos 7 上设置一个 mysql 8 intsall 并且玩得很开心。我们有一些旧版软件通过小写名称连接到旧的 mysql 数据库,我想将其转移到这个新设置中。
我在正确设置此配置时遇到问题,我不知道要设置什么文件或何时设置它,甚至不知道在什么用户/权限级别下设置它。
当我在 /etc/my.cnf 中将其设置为 1 然后尝试启动 mysqld 我得到:
[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('1').
我重新安装了 mysql,认为重新开始对我的 /etc/my.cnf 有以下设置:
lower_case_table_names=1
default_authentication_plugin=mysql_native_password
bind-address=REDACTED
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
安装 mysql-server 并将 .cnf 文件复制到它的位置后,我运行:
mysqld --defaults-file=/etc/my.cnf
并受到欢迎:
2018-10-22T21:30:27.826322Z 0 [Warning] [MY-010139] [Server] Changed limits: max_open_files: 1024 (requested 8161)
2018-10-22T21:30:27.826414Z 0 [Warning] [MY-010142] [Server] Changed limits: table_open_cache: 431 (requested 4000)
2018-10-22T21:30:28.057606Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/be-db-10.lower-test
2018-10-22T21:30:28.057668Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.13) starting as process 27077
2018-10-22T21:30:28.060609Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/be-db-10.lower-test
2018-10-22T21:30:28.060628Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/be-db-10.lower-test
2018-10-22T21:30:28.061062Z 0 [ERROR] [MY-010187] [Server] Could not open file '/var/log/mysqld.log' for error logging: Permission denied
2018-10-22T21:30:28.061098Z 0 [ERROR] [MY-010119] [Server] Aborting
我假设在某些时候我彻底搞砸了一些权限,或者 mysql 没有被完全删除?
解决方案
在可以更改值 lower_case_table_names 之前,在 CentOs 7 上卸载 mysql
yum remove mysql mysql-server
卸载过程后,重命名或删除mysql数据
mv /var/lib/mysql /var/lib/mysql_backup
(备份)或rm -rf /var/lib/mysql
(删除)
再次安装mysql
yum install mysql mysql-server
在运行mysql服务器之前,添加lower_case_table_names=1
,/etc/my.cnf
例如:nano /etc/my.cnf
保存文件,然后使用命令启动mysql服务器systemctl start mysqld
检查结果可以通过查询来完成SHOW VARIABLES like 'lower%';
你应该得到lower_case_table_names
价值1
我希望它可以帮助。
推荐阅读
- java - 通过服务初始化数组列表时出现 NullPointerException
- xpath - BASEX - 从变量中获取唯一值
- javascript - 使用 AJAX,如何访问 PHP 发送的自定义 HTTP 头响应文本?
- c++ - C++:如何对 scoped_ptr 进行单元测试?
- python - 在熊猫中传播范围日期
- swift - 用集合视图中的数据填充表视图
- laravel - 如何将 laravel 刀片导出到 word 文档
- swift - 当我按下 tableview 中活动的按钮时
- c - 为什么操作系统内核通常用 C 或 C++ 编写?
- python - 如何连接 2 个数组:1 个数组包含字符串,另一个数组包含 int64