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


72

我正在尝试远程连接到Ubuntu中的数据库,但是在尝试进行mysql -u root -p以下操作时收到错误消息:

在第1行的配置文件/etc/mysql/my.cnf中找到没有前一组的选项

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重新安装。
里克·亨德森

Answers:


49

字符集编码

检查文件的字符集编码。确保它是ASCII码。

例如,使用od命令查看开头是否有UTF-8 BOM。


45
补充说明:缺少[mysqld]也会导致错误。
chanux 2013年

由于某种原因,my.cnf的开头缺少[mysqld]。在那里添加解决了问题,mysql现在按预期运行。
webmaniacgr

在Windows上使用MySQL工作台编辑文件后,这就是我的问题。我解决它通过写字板打开它,将其保存为“纯文本文档”
JVE999

93

缺少配置头

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

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

之后,请记住重新启动MySQL服务。

sudo mysqld stop
sudo mysqld start

1
他的my.cnf已经有了[mysqld] ...您的回答对那些没有该行的人很有用。
里根·奥乔拉

13

是因为[mysqld]的字母或数字在前面,所以只需检查一下竖立符号或数字[mysqld]之前不需要

它可能像

0 [mysqld]则会发生此错误


2
是的,配置文件中有一个随机的+字符。谢谢!
Sid Kshatriya 2013年

对我来说,它最终是在文件开头的注释,在开始注释程序之前没有#!
Kzqai

6

对我有用的是:

  • 使用记事本++打开my.ini
  • 编码->转换为ANSI
  • 保存

0

使用社区安装程序安装MySQL 8.0.15时遇到了这个问题。编辑后,安装程序随附的my.ini文件无法正常工作。我通过下载该zip文件夹进行了完整的手动安装。我能够创建自己的my.ini文件,其中仅包含我所关心的参数,并且该文件有效。

  1. 从MySQL网站下载zip文件
  2. 将文件夹解压缩到C:\ program files \ MySQL \ MySQL8.0
  3. 在将zip文件夹解压缩到的MySQL8.0文件夹中,创建一个文本文件并将其另存为my.ini
  4. 在您关注的my.ini文件中包括参数。所以是这样的(只要确保已经有一个为datadir创建的文件夹,否则初始化将不起作用):

    [mysqld]
    basedire=C:\program files\MySQL\MySQL8.0
    datadir=D:\MySQL\Data
    ....continue with whatever parameters you want to include
    
  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
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.