我在ubuntu 18.04上安装了mysql社区服务器8.013,并且遇到以下问题。 我想设置lower_case_table_names = 1,以便在数据库中使用不区分大小写的表名。 我编辑了/etc/mysql/mysql.conf.d/mysqld.cnf,并在[mysqld]下添加了以下行
lower_case_table_names=1
mysqld.cnf现在如下
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
lower_case_table_names=1
我使用停止了mysql服务器
sudo service mysql stop
然后我尝试使用重新启动
sudo service mysql start
但出现以下错误
Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.
我尝试了
systemctl status mysql.service
我得到了以下信息
christoph@christoph-Latitude-E6530:/etc/init.d$ systemctl status mysql.service
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2018-11-01 16:38:14 EET; 24s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 6681 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
Process: 6642 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 6681 (code=exited, status=1/FAILURE)
Status: "SERVER_BOOTING"
Error: 2 (No such file or directory)
Νοε 01 16:38:12 christoph-Latitude-E6530 systemd[1]: Starting MySQL Community Server...
Νοε 01 16:38:14 christoph-Latitude-E6530 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Νοε 01 16:38:14 christoph-Latitude-E6530 systemd[1]: mysql.service: Failed with result 'exit-code'.
Νοε 01 16:38:14 christoph-Latitude-E6530 systemd[1]: Failed to start MySQL Community Server.
使用journalctl -xe我得到以下信息
-- The result is RESULT.
Νοε 01 17:32:00 christoph-Latitude-E6530 sudo[2526]: pam_unix(sudo:session): session closed for user root
Νοε 01 17:32:04 christoph-Latitude-E6530 wpa_supplicant[743]: wlp3s0: WPA: Group rekeying completed with 4c:5e:0c:7a:95:cf [GTK=CCMP]
Νοε 01 17:32:08 christoph-Latitude-E6530 gnome-shell[1565]: Some code accessed the property 'discreteGpuAvailable' on the module 'appDisplay'. That property w
Νοε 01 17:32:08 christoph-Latitude-E6530 gnome-shell[1565]: Some code accessed the property 'WindowPreviewMenuItem' on the module 'windowPreview'. That proper
lines 1349-1371/1371 (END)
Νοε 01 17:31:58 christoph-Latitude-E6530 systemd[1]: Starting MySQL Community Server...
-- Subject: Unit mysql.service has begun start-up
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit mysql.service has begun starting up.
Νοε 01 17:31:58 christoph-Latitude-E6530 audit[2593]: AVC apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/usr/sbin/mysqld" pid=2593 comm=
Νοε 01 17:31:58 christoph-Latitude-E6530 kernel: kauditd_printk_skb: 28 callbacks suppressed
Νοε 01 17:31:58 christoph-Latitude-E6530 kernel: audit: type=1400 audit(1541086318.959:39): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name
Νοε 01 17:32:00 christoph-Latitude-E6530 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Νοε 01 17:32:00 christoph-Latitude-E6530 systemd[1]: mysql.service: Failed with result 'exit-code'.
Νοε 01 17:32:00 christoph-Latitude-E6530 systemd[1]: Failed to start MySQL Community Server.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit mysql.service has failed.
我还尝试使用
启动服务器sudo service mysql start --initialize lower_case_table_names=1
如此处所述 lower_case_table_names Settings in MySQL 8.0.12 但我仍然遇到相同的错误,并且mysql根本无法启动
如果我运行以下
sudo vi /var/log/mysql/error.log
我得到以下错误原因
Different lower_case_table_names settings for server ('1') and data dictionary ('0').
Data Dictionary initialization failed.
有什么想法为什么会发生这种情况以及如何解决?
答案 0 :(得分:3)
为了使它在MySQL 8.0和linux中工作,请遵循以下步骤
0)在执行以下步骤之前,先备份mysql模式
mysqldump -h localhost -u root -p mysql > /home/username/dumps/mysqldump.sql
然后使用停止mysql
sudo service mysql stop
1)移动或删除/ var / lib / mysql目录。这将删除所有数据库!
mv /var/lib/mysql /tmp/mysql
2)创建一个新的/ var / lib / mysql目录,并使mysql用户成为所有者
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql
3)编辑/etc/mysql/mysql.conf.d/mysqld.cnf并在[mysqld]之后添加以下行
lower_case_table_names=1
4)使用以下内容初始化mysql
mysqld --defaults-file = / etc / mysql / my.cnf-初始化lower_case_table_names = 1 --user = mysql --console
使用默认文件的实际位置更改默认文件。 有关mysql初始化的更多信息,请点击此处:https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization-mysqld.html
5)(可选)重复
chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql
如果/ var / lib / mysql中文件的所有者不是mysql
6)使用
启动mysqlsudo service mysql start
7)如果一切正常,请使用
打开mysql。mysql -u root -p
并通过运行此查询
SHOW VARIABLES where Variable_name like 'lower%';
你会得到
'lower_case_table_names', '1'
8)使用在步骤0中创建的转储恢复mysql模式。
9)执行mysql_upgrade创建sys模式
答案 1 :(得分:3)
这对我来说适用于使用MySQL 8.0.20的全新Ubuntu Server 20.04安装(无需担心现有数据库-因此,如果您有重要数据,则应在执行此操作之前将其备份/导出):
所以...我使用提升的权限来做所有事情:
sudo su
安装MySQL(如果尚未安装):
apt-get install mysql-server
备份配置文件,将其卸载,删除所有数据库和MySQL相关数据:
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.backup
service mysql stop
apt-get --purge autoremove mysql-server
rm -R /var/lib/mysql
还原保存的配置文件,编辑文件(在[mysqld]行的下面添加一行):
cp /etc/mysql/mysql.conf.d/mysqld.cnf.backup /etc/mysql/mysql.conf.d/mysqld.cnf
vim /etc/mysql/mysql.conf.d/mysqld.cnf
...
lower_case_table_names=1
...
重新安装MySQL(保留配置文件),配置其他设置:
apt-get install mysql-server
service mysql start
mysql_secure_installation
mysql
SHOW VARIABLES LIKE 'lower_case_%';
exit
答案 2 :(得分:0)
您需要重新初始化MySQL数据目录。
根据{{3}},lower_case_table_names
仅在初始化服务器时配置。
您可以使用此脚本https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html来做到这一点。
请注意,您的数据将被销毁! 因此,在运行备份之前先创建一个备份。
答案 3 :(得分:0)
请转到以下位置并添加以下代码
位置-cd /etc/mysql/mysql.conf.d /
然后sudo vim mysqld.cnf
下一步,在[mysqld]下添加以下内容
lower_case_table_names=1
答案 4 :(得分:-1)
我也有同样的问题。
我编辑了/etc/mysql/conf.d/mysql.cnf文件。 (不是/etc/mysql/mysql.conf.d/mysqld.cnf文件。)
我在[mysqld]行的下面插入了lower_case_table_names = 1。 (下面[mysqld]行下面没有行。
然后我使用sudo服务mysql restart重新启动mysql
它解决了我的问题。