MySQL my.cnf文件 - 找到没有前置组的选项

89

我试图远程连接 Ubuntu 上的数据库,但当我尝试使用 mysql -u root -p 命令时,收到错误消息:

在配置文件 /etc/mysql/my.cnf 的第 1 行发现无前导组的选项。

my.cnf 文件如下:

[mysqld]
user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
bind-address        =  0.0.0.0
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
myisam-recover         = BACKUP
query_cache_limit   = 1M
query_cache_size        = 16M
log_error                = /var/log/mysql/error.log
expire_logs_days    = 10
max_binlog_size         = 100M

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

[mysql]

[isamchk]
key_buffer      = 16M

2
这看起来与在Ubuntu上安装mysql时默认安装的my.cnf文件非常不同。您尝试过从默认文件开始,逐渐添加自定义内容吗? - Noah Goodrich
我刚刚删除了注释并移动了代码。 - Afra
我认为默认文件看起来有点不同。 - pensebien
这种设置是特定于版本的吗?我在Ubuntu 16和mysql 5.7上遇到了同样的问题,或者类似的问题......从apt进行了新安装。 - Rick Henderson
5个回答

133

缺少配置头文件

只需在/etc/mysql/my.cnf文件的第一行添加[mysqld]即可。

示例

[mysqld]
default-time-zone = "+08:00"

之后,请记得重新启动您的MySQL服务。

sudo mysqld stop
sudo mysqld start

5
他的my.cnf文件已经有了[mysqld]...你的答案对那些没有这行的人很有用。 - Reagan Ochora

65

字符集编码

检查文件的字符集编码是否为 ASCII。

使用 od 命令查看文件开头是否有 UTF-8 BOM。


56
补充说明:缺少[mysqld]也会导致该错误。 - chanux
1
由于某种原因,我的my.cnf文件开头缺少[mysqld]。在那里添加它解决了问题,现在mysql正常运行。 - webmaniacgr
这是我在Windows上使用MySQL Workbench编辑文件后遇到的问题。我通过在WordPad中打开并将其保存为“纯文本文档”来解决它。 - JVE999

15

对我有效的方法是:

  • 使用Notepad++打开my.ini文件
  • 编码 --> 转换为ANSI
  • 保存

13

出现这个错误是因为在 [mysqld] 前面有字母或数字,请检查它们是否存在,任何东西都不应该在 [mysqld] 之前。

可能会出现这种情况:

0[mysqld],那么就会出现此错误。


2
是的,在配置文件中有一个随机的 + 字符。谢谢! - Sid Kshatriya
对我来说,问题在于文件开头的一条注释没有用 # 开始来进行注释处理! - Kzqai

0

我在使用社区安装程序安装MySQL 8.0.15时遇到了问题。安装程序附带的my.ini文件在编辑后无法正常工作。我通过下载zip文件进行了完全手动安装。我能够创建自己的my.ini文件,其中只包含我关心的参数,并且它可以正常工作。

  1. 从 MySQL 网站下载 zip 文件。
  2. 将文件夹解压到 C:\Program Files\MySQL\MySQL8.0 目录下。
  3. 在你刚才解压缩的 MySQL8.0 文件夹中创建一个文本文件,保存为 my.ini。
  4. 在 my.ini 文件中包含你关心的参数。例如:

    [mysqld]
    basedir=C:\program files\MySQL\MySQL8.0
    datadir=D:\MySQL\Data
    ....继续添加你想包含的其他参数
    
  5. 通过在命令提示符中运行以下两个命令来初始化数据目录:

    cd C:\program files\MySQL\MySQL8.0\bin
    mysqld --default-file=C:\program files\MySQL\MySQL8.0\my.ini --initialize
    
  6. 通过运行以下两个命令将 MySQL 服务器安装为服务:

    cd C:\program files\MySQL\MySQL8.0\bin
    mysqld --install --default-file=C:\program files\MySQL\MySQL8.0\my.ini
    
  7. 最后,通过运行以下两个命令首次启动服务器:

    cd C:\program files\MySQL\MySQL8.0\bin
    mysqld --console
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接