MySQL my.cnf路径在哪里?


10

我设法找到了MySQL的安装目录: /usr/local/mysql/

在哪里可以找到要my.cnf在哪里配置服务器的路径?我尝试创建一个/etc/my.cnf(如下所示),但没有任何影响

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8

有关您正在使用的发行版的详细信息会有所帮助。
蒂姆(Tim)

可以肯定的是,debian / * buntu / rhel / cent不会在软件包安装中使用/ usr / local。听起来更像是懈怠或freebsd。
蒂姆(Tim)2012年

Answers:


20

根据本文

从命令行/终端运行此命令将显示MySQL在Linux / BSD / OS X系统上查找my.cnf文件的位置:

mysql --help | grep "Default options" -A 1 

这将输出如下内容:

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

现在,您可以检查使用上述输出的文件/etc/my.cnf,然后/etc/mysql/my.cnf等。如果这些位置之一不存在,则可以创建一个并知道MySQL将使用它。


3

在Linux系统上,“找到my.cnf”将是最快的解决方案。

如果有几个的my.cnf文件,都在寻找可能的(例如/etc/etc/mysql/opt/mysql/etc等),那么你就可以运行strace,看看MySQL二进制试图找到它的配置文件,但我认为这是一个矫枉过正。


我得到了-bash: locate: command not found...我已经尝试过,find / my.cnf但是什么也没找到。
网络

假定自my.cnf文件创建以来,locateb已更新。通常,这是每天通过cron完成的。如果您需要手动更新,请以根用户
身份

locate: command not found不是updateb问题,他没有包装。
2012年

安装“ slocate”软件包。
TheCompWiz 2012年

2

可以在黑暗中拍摄狂野镜头:

如果安装在数据库中/usr/local/mysql,然后尝试在寻找/etc/localmy.cnf

这是如何判断您是否有 my.cnf

运行此查询 (<= 5.6.7)

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');

或者,(>= 5.6.8)它已移至性能模式。

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';

如果您应该得到:

您正在使用默认值运行,并且可能不my.cnf存在礼物。

注意:

从MySQL 5.7.6开始,此处描述的表中的可用信息也可以从Performance Schema中获得。相对于Performance Schema表,不建议使用INFORMATION_SCHEMA表,并且在以后的MySQL版本中将删除该表。有关从INFORMATION_SCHEMA表迁移到Performance Schema表的建议,请参见第25.20节“迁移到Performance Schema系统和状态变量表”。


-bash: updatedb: command not found
网络

更新了我的答案。请再试一遍 !!!
RolandoMySQLDBA 2012年

/usr/bin/which: no updatedb in (/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/bin:/usr/local/apache2/bin:/usr/local/firefox:/usr/local/mysql/bin:/usr/games:/usr/local/fetter/bin)
Webnet 2012年

1

您是如何安装MySQL的以及在什么平台上安装的?

在unixoid操作系统上的蛮力方法:

find / -name my.cnf -print

我没有安装它,而是在已经使用了几年的计算机上。开启Linux mars 2.6.5-7.147-bigsmp #1 SMP Thu Jan 27 09:19:29 UTC 2005 i686 i686 i386 GNU/Linux
Webnet 2012年

1

strace -fe open /etc/init.d/mysql start 2>&1|grep my.cnf 应该会显示用于打开文件的系统调用。


1

您的cnf创建的文件似乎已被另一文件所取代。在下面查看默认顺序。

mysqld-详细-帮助

从给定的顺序从以下文件中读取默认选项:/etc/my.cnf〜/ .my.cnf /etc/my.cnf


1

您如何确定未读取cnf文件?

自更改以来您是否重新启动了mysqld?

您是否尝试过创建新的数据库并查看其值?


0

要安装locate和updatedb才能运行它。

使用fedora,centos以root身份运行:

yum install mlocate

如果您正在运行Ubuntu,请运行:

sudo apt-get install mlocate

完成安装后,请运行updatedb b Fedora(以root用户身份):

$updatedb 

Ubuntu:

sudo updatedb

然后您可以运行上面列出的locate命令。同样,my.cnf通常位于/ etc中。您确定已安装mysql吗?如果不这样做,请执行上述命令进行安装,并用mysqld替换mlocate,祝您好运!

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.