【问题标题】:lower_case_table_names=1 on Ubuntu 18.04 doesn't let mysql to startUbuntu 18.04 上的 lower_case_table_names=1 不允许 mysql 启动
【发布时间】:2019-04-05 19:31:47
【问题描述】:

我在 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.

任何想法为什么会发生这种情况以及如何解决它?

【问题讨论】:

  • 你能在配置文件中 = 的任一侧放置空格,在其中声明 lower_case_table_names
  • 不,它没有用。如果我使用 lower_case_table_names = 2 它开始,但使用 lower_case_table_names = 1 ,它永远不会开始
  • 不建议在所有操作系统上将其设置为 1
  • 这可能是Mysql 8.0版的一个bug bugs.mysql.com/bug.php?id=90695
  • 这能回答你的问题吗? lower_case_table_names Settings in MySQL 8.0.12

标签: mysql lowercase ubuntu-18.04


【解决方案1】:

为了使这项工作在 MySQL 8.0 和 linux 中工作,请按照以下步骤操作

  1. 在执行以下步骤之前备份 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 --initialize lower_case_table_names=1 --user=mysql --console
    

使用默认文件的实际位置更改默认文件。 此处有关 mysql 初始化的更多信息:https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization-mysqld.html

  1. (可选)重复

    chown -R mysql:mysql /var/lib/mysql
    chmod 750 /var/lib/mysql
    

如果 /var/lib/mysql 中文件的所有者不是 mysql

  1. 使用 mysql 启动

    sudo service mysql start
    
  2. 如果一切正常,打开mysql使用

    mysql -u root -p
    

并通过运行此查询

SHOW VARIABLES where Variable_name like 'lower%';

你会得到

'lower_case_table_names', '1'
  1. 使用步骤 0 中创建的转储恢复 mysql 架构。

  2. 执行 mysql_upgrade 创建 sys 架构

【讨论】:

  • 我在尝试初始化 mysqld 时收到此错误:“参数太多(第一个额外是 'lower_case_table_names=1')”(服务器版本:8.0.17-0ubuntu2)
  • 想通了。必须以这种方式初始化:mysqld --defaults-file=/etc/mysql/my.cnf --initialize --user=mysql --lower_case_table_names=1 --console。现在可以了!
【解决方案2】:

您需要重新初始化 MySQL 数据目录。 根据https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.htmllower_case_table_names只能在初始化服务器时配置。

你可以使用这个脚本https://github.com/igrmk/ubuntu-reinit-mysql来做到这一点。

请注意,您的数据将被销毁! 因此,在运行之前创建一个备份。

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题。

    我编辑了 /etc/mysql/conf.d/mysql.cnf 文件。 (不是 /etc/mysql/mysql.conf.d/mysqld.cnf 文件。)

    我在 [mysqld] 行下方插入了 lower_case_table_names=1。 (下面的 [mysqld] 行下面没有行。

    然后我使用 sudo service mysql restart 重新启动了 mysql

    它解决了我的问题。

    【讨论】:

      【解决方案4】:

      这对我使用 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
      

      【讨论】:

      • 非常感谢,在这个问题上花了一天时间后,这对我有用。
      【解决方案5】:

      请到以下位置并添加以下代码

      位置 - cd /etc/mysql/mysql.conf.d/

      然后sudo vim mysqld.cnf

      接下来,在[mysqld]下面添加

      lower_case_table_names=1
      

      【讨论】:

        【解决方案6】:

        在 Mysql Server 8.0 Windows 操作系统上,如果您在 mysql.ini 中更改 lower_case_table_names=2,服务器将无法启动,因此您必须按照以下步骤 1:备份所有数据/导出到.sql 或 Dump all data 步骤 2:停止服务 步骤 3:从 C:\Program Files\ Mysql Server 8.0\Data 中删除数据文件夹 步骤 4:打开 C:\Program Files\ Mysql Server 8.0\my.ini 以管理员身份使用记事本步骤:5 找到 set lower_case_table_names=2 如果你想要驼峰表名步骤:6 打开 mysql 安装程序,然后打开重新配置打开 -> 显示高级和日志记录选项 -> 高级选项s -> 使用列表步骤中的第二个选项:7 然后一切都会好的

        【讨论】:

          猜你喜欢
          • 2019-07-28
          • 2018-10-11
          • 2018-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-30
          • 2018-10-30
          • 1970-01-01
          相关资源
          最近更新 更多