Linux 如何找到 MySQL my.cnf 位置
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2482234/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I find the MySQL my.cnf location
提问by robinmag
Is there a MySQL command to locate the my.cnf
configuration file, similar to how PHP's phpinfo()
locates its php.ini
?
是否有一个 MySQL 命令来定位my.cnf
配置文件,类似于 PHPphpinfo()
定位它的方式php.ini
?
采纳答案by tadamson
There is no internal MySQL command to trace this, it's a little too abstract. The file might be in 5 (or more?) locations, and they would all be valid because they load cascading.
没有内部 MySQL 命令来跟踪这个,它有点太抽象了。该文件可能位于 5 个(或更多?)位置,并且它们都是有效的,因为它们加载级联。
- /etc/my.cnf
- /etc/mysql/my.cnf
- $MYSQL_HOME/my.cnf
- [datadir]/my.cnf
- ~/.my.cnf
- /etc/my.cnf
- /etc/mysql/my.cnf
- $MYSQL_HOME/my.cnf
- [数据目录]/my.cnf
- ~/.my.cnf
Those are the default locations MySQL looks at. If it finds more than one, it will load each of them & values override each other (in the listed order, I think). Also, the --defaults-file
parameter can override the whole thing, so... basically, it's a huge pain in the butt.
这些是 MySQL 查看的默认位置。如果找到多个,它将加载每个值并且值相互覆盖(我认为按照列出的顺序)。此外,--defaults-file
参数可以覆盖整个事情,所以......基本上,这是一个巨大的痛苦。
But thanks to it being so confusing, there's a good chance it's just in /etc/my.cnf.
但是由于它如此混乱,很有可能它就在 /etc/my.cnf 中。
(if you just want to see the values: SHOW VARIABLES
, but you'll need the permissions to do so.)
(如果您只想查看值:SHOW VARIABLES
,但您需要权限才能这样做。)
回答by Buhake Sindi
I don't know how you've setup MySQL on your Linux environment but have you checked?
我不知道您是如何在 Linux 环境中设置 MySQL 的,但是您检查过了吗?
- /etc/my.cnf
- /etc/my.cnf
回答by Dyllon
You could always run find in a terminal.
你总是可以在终端中运行 find 。
find / -name my.cnf
回答by Chuck Ross
This might work:
这可能有效:
strace mysql ";" 2>&1 | grep cnf
on my machine this outputs:
在我的机器上输出:
stat64("/etc/my.cnf", 0xbf9faafc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4271, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
read(3, "# /etc/mysql/my.cnf: The global "..., 4096) = 4096
stat64("/home/xxxxx/.my.cnf", 0xbf9faafc) = -1 ENOENT (No such file or directory)
So it looks like /etc/mysql/my.cnf is the one since it stat64() and read() were successful.
所以看起来 /etc/mysql/my.cnf 是那个,因为它 stat64() 和 read() 是成功的。
回答by Timur
You can actually "request" MySQL for a list of all locations where it searches for my.cnf (or my.ini on Windows). It is not an SQL query though. Rather, execute:
您实际上可以“请求” MySQL 以获取它搜索 my.cnf(或 Windows 上的 my.ini)的所有位置的列表。虽然它不是 SQL 查询。而是执行:
$ mysqladmin --help
or, prior 5.7:
或者,在 5.7 之前:
$ mysqld --help --verbose
In the very first lines you will find a message with a list of all my.cnf locations it looks for. On my machine it is:
在第一行中,您会找到一条消息,其中包含它要查找的所有 my.cnf 位置的列表。在我的机器上是:
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
Or, on Windows:
或者,在 Windows 上:
Default options are read from the following files in the given order:
C:\Windows\my.ini
C:\Windows\my.cnf
C:\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
Note however, that it might be the case that there is no my.cnf file at any of these locations. So, you can create the file on your own - use one of the sample config files provided with MySQL distribution (on Linux - see /usr/share/mysql/*.cnf
files and use whichever is appropriate for you - copy it to /etc/my.cnf
and then modify as needed).
但是请注意,可能是这些位置中的任何一个都没有 my.cnf 文件的情况。因此,您可以自己创建文件 - 使用 MySQL 发行版提供的示例配置文件之一(在 Linux 上 - 查看/usr/share/mysql/*.cnf
文件并使用适合您的文件 - 将其复制到/etc/my.cnf
,然后根据需要进行修改)。
Also, note that there is also a command line option --defaults-file
which may define custom path to my.cnf or my.ini file. For example, this is the case for MySQL 5.5 on Windows - it points to a my.ini file in the data directory, which is not normally listed with mysqld --help --verbose
. On Windows - see service properties to find out if this is the case for you.
另外,请注意,还有一个命令行选项--defaults-file
可以定义 my.cnf 或 my.ini 文件的自定义路径。例如,Windows 上的 MySQL 5.5 就是这种情况——它指向数据目录中的 my.ini 文件,该文件通常不以mysqld --help --verbose
. 在 Windows 上 - 查看服务属性以了解您是否属于这种情况。
Finally, check the https://dev.mysql.com/doc/refman/8.0/en/option-files.html- it is described there in more details.
最后,检查https://dev.mysql.com/doc/refman/8.0/en/option-files.html- 那里有更详细的描述。
回答by jbatista
Another option is to use the whereis command.
另一种选择是使用 whereis 命令。
E.g. whereis my.cnf
例如哪里是 my.cnf
回答by Satish Sharma
You can use :
您可以使用 :
locate my.cnf
whereis my.cnf
find . -name my.cnf
回答by New Alexandria
If you're on a Mac with Homebrew, use
如果您使用的是带有 Homebrew 的 Mac,请使用
brew info mysql
酿造信息mysql
You'll see something like
你会看到类似的东西
$ brew info mysql
mysql: stable 5.6.13 (bottled)
http://dev.mysql.com/doc/refman/5.6/en/
Conflicts with: mariadb, mysql-cluster, percona-server
/usr/local/Cellar/mysql/5.6.13 (9381 files, 354M) *
That last line is the INSTALLERDIR
per the MySQL docs
最后一行是INSTALLERDIR
每个 MySQL 文档
回答by Ranaivo
By default, mysql search my.cnf first at /etc folder. If there is no /etc/my.cnf file inside this folder, I advise you to create new one in this folder as indicated by the documentation (https://dev.mysql.com/doc/refman/5.6/en/option-files.html).
默认情况下,mysql 首先在 /etc 文件夹中搜索 my.cnf。如果此文件夹中没有 /etc/my.cnf 文件,我建议您按照文档(https://dev.mysql.com/doc/refman/5.6/en/option)的指示在此文件夹中创建一个新文件-files.html)。
You can also search for existing my.cnf furnished by your mysql installation. You can launch the following command
您还可以搜索由您的 mysql 安装提供的现有 my.cnf。您可以启动以下命令
sudo find / -name "*.cnf"
You can use the following configuration file with myisam table and without innodb mysql support (from port installation of mysql on mac os x maverick). Please verify each command in this configuration file.
您可以将以下配置文件与 myisam 表一起使用,而无需 innodb mysql 支持(来自 mac os x maverick 上 mysql 的端口安装)。请验证此配置文件中的每个命令。
# Example MySQL config file for large systems.
#
# This is for a large system with memory = 512M where the system runs mainly
# MySQL.
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /opt/local/var/run/mysql5/mysqld.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /opt/local/var/run/mysql5/mysqld.sock
skip-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
# the syntax is:
#
# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
#
# where you replace <host>, <user>, <password> by quoted strings and
# <port> by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables' values below will be ignored and
# overridden by the content of the master.info file, unless you shutdown
# the slave server, delete master.info and restart the slaver server.
# For that reason, you may want to leave the lines below untouched
# (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host = <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user = <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password = <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port = <port>
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /opt/local/var/db/mysql5
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /opt/local/var/db/mysql5
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 256M
#innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 64M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
回答by Roland
All great suggestions, in my case I didn't find it in any of those locations, but in /usr/share/mysql
, I have a RHEL VM and I installed mysql5.5
所有很棒的建议,就我而言,我没有在任何这些位置找到它,但是在/usr/share/mysql
,我有一个 RHEL VM 并且我安装了mysql5.5