Risposte:
Non esiste un comando MySQL interno per rintracciarlo, è un po 'troppo astratto. Il file potrebbe trovarsi in 5 (o più?) Posizioni e sarebbero tutti validi perché caricano in cascata.
Queste sono le posizioni predefinite che MySQL guarda. Se ne trova più di una, caricherà ognuna di esse e i valori si sovrascriveranno (nell'ordine elencato, credo). Inoltre, il --defaults-file
parametro può sovrascrivere il tutto, quindi ... in pratica, è un enorme dolore nel culo.
Ma grazie alla sua confusione, ci sono buone probabilità che sia solo in /etc/my.cnf.
(se vuoi solo vedere i valori:, SHOW VARIABLES
ma avrai bisogno delle autorizzazioni per farlo.)
/etc/init.d/mysqld restart
.
my.cnf
si trova in /etc/mysql/my.cnf
.
mysql --help
e vedrai Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
etc/mysql/my.cnf
puntava a un altro collegamento simbolico a /etc/alternatives/my.cnf
cui punta etc/mysql/mysql.cnf
.
ls /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
Puoi effettivamente "richiedere" MySQL per un elenco di tutte le posizioni in cui cerca my.cnf (o my.ini su Windows). Tuttavia, non è una query SQL. Piuttosto, esegui:
$ mysqladmin --help
o, prima del 5.7:
$ mysqld --help --verbose
Nelle prime righe troverai un messaggio con un elenco di tutte le posizioni my.cnf che cerca. Sulla mia macchina è:
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
Oppure, su 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
Si noti, tuttavia, che potrebbe non esserci alcun file my.cnf in nessuna di queste posizioni . Quindi, è possibile creare il file da soli - utilizzare uno dei file di configurazione di esempio forniti con la distribuzione MySQL (su Linux - vedere i /usr/share/mysql/*.cnf
file e utilizzare quello che è appropriato per te - copiarlo /etc/my.cnf
e quindi modificarlo secondo necessità).
Si noti inoltre che esiste anche un'opzione della riga di comando--defaults-file
che può definire il percorso personalizzato per il file my.cnf o my.ini. Ad esempio, questo è il caso di MySQL 5.5 su Windows: punta a un file my.ini nella directory dei dati, che normalmente non è elencato conmysqld --help --verbose
. Su Windows: vedi le proprietà del servizio per scoprire se questo è il tuo caso.
Infine, controlla https://dev.mysql.com/doc/refman/8.0/en/option-files.html - è descritto qui in maggiori dettagli.
Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
- Mi aspettavo i primi 2 file in ordine inverso.
mysqld --help --verbose
contraddicono quanto dichiarato in dev.mysql.com/doc/refman/5.5/en/option-files.html . Nella mia esperienza "recente fino ad oggi" con la versione 5.6, le informazioni nel sito Web sono le più corrette e pertinenti. La priorità della posizione dei file fornita dal comando help è fuorviante e porterà a risultati negativi.
Puoi sempre eseguire find in un terminale.
find / -name my.cnf
find / -name my.cnf
è la soluzione migliore, ma puoi anche controllare la tua home directory e /etc/mysql/my.conf Puoi anche vedere se il tuo MYSQL_HOME è impostato digitando echo $MYSQL_HOME
un terminale
~/.my.cnf
- annota il punto iniziale nel nome del file. Anche l'esecuzione di una ricerca sull'intero file system di solito genera scadenze di errori "Autorizzazione negata" a meno che tu non sia root. Quindi dovrebbe essere il comando find find / -name '*my.cnf' 2>/dev/null
.
Puoi usare :
locate my.cnf
whereis my.cnf
find . -name my.cnf
whereis
non funzionerà qui; cerca le posizioni corrispondenti a un comando e non trova file arbitrari.
Questo potrebbe funzionare:
strace mysql ";" 2>&1 | grep cnf
sulla mia macchina questo produce:
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)
Quindi sembra che /etc/mysql/my.cnf sia quello dato che stat64 () e read () hanno avuto successo.
mysql --help | grep /my.cnf | xargs ls
ti dirà dove my.cnf
si trova su Mac / Linux
ls: cannot access '/etc/my.cnf': No such file or directory
ls: cannot access '~/.my.cnf': No such file or directory
/etc/mysql/my.cnf
In questo caso, è dentro /etc/mysql/my.cnf
ls: /etc/my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: ~/.my.cnf: No such file or directory
/usr/local/etc/my.cnf
In questo caso, è dentro /usr/local/etc/my.cnf
Per impostazione predefinita, mysql cerca prima my.cnf nella cartella / etc. Se non ci sono file /etc/my.cnf all'interno di questa cartella, ti consiglio di crearne uno nuovo in questa cartella come indicato dalla documentazione ( https://dev.mysql.com/doc/refman/5.6/en/option -files.html ).
Puoi anche cercare my.cnf esistente fornito dalla tua installazione mysql. È possibile avviare il comando seguente
sudo find / -name "*.cnf"
È possibile utilizzare il seguente file di configurazione con la tabella myisam e senza il supporto mysql innodb (dall'installazione della porta di mysql su mac os x maverick). Verifica ogni comando in questo file di configurazione.
# 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
Come notato da Konyak, puoi ottenere l'elenco dei luoghi in cui mysql cercherà il tuo my.cnf
file eseguendolo mysqladmin --help
. Poiché questo è piuttosto dettagliato, puoi arrivare rapidamente alla parte che ti interessa con:
$ mysqladmin --help | grep -A1 'Default options'
Questo ti darà un output simile a:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
A seconda di come hai installato mysql, è possibile che nessuno di questi file sia ancora presente. Puoi cat
farli per vedere come viene costruita la tua configurazione e crearne una tua my.cnf
se necessario nella tua posizione preferita.
Per Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf
For Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf
Non so come hai installato MySQL sul tuo ambiente Linux ma hai controllato?
Prova a correre mysqld --help --verbose | grep my.cnf | tr " " "\n"
L'output sarà qualcosa di simile
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf
Se sei su un Mac con Homebrew, usa
info birra mysql
Vedrai qualcosa del genere
$ 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) *
L'ultima riga corrisponde ai INSTALLERDIR
documenti di MySQL
Dovrai esaminare le varie posizioni in base alla tua versione di MySQL.
mysqld --help -verbose | grep my.cnf
For Homebrew:
/usr/local/Cellar/mysql/8.0.11/bin/mysqld (mysqld 8.0.11)
Default possible locations:
/etc/my.cnf
/etc/mysql/my.cnf
~/.my.cnf
Found mine here:
/usr/local/etc/my.cnf
Puoi anche eseguire questo comando.
mysql --help | grep cnf
grep
con findstr
: mysql --help | findstr cnf
e lo ha fatto la magia
Su Ubuntu (modifica diretta):
$ sudo nano /etc/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
Ho installato il bundle xampp con apache, php and mysql
in Ubuntu . Il my.cnf
file si trova nella /opt/lampp/etc/
cartella. Spero che possa aiutare qualcuno.
Nel caso in cui ti trovi in un VPS e stai provando a modificare un my.cnf su un server già in esecuzione puoi provare:
ps aux | grep mysql
Ti verranno mostrati i parametri in cui è in esecuzione il comando mysql e dove --defaults-file
puntano i punti
Si noti che il server potrebbe essere in esecuzione più di un server MySQL / MariaDB. Se vedi una riga senza --defaults-file
parametro, quell'istanza potrebbe recuperare la configurazione dai .cnf che sono citati mysqladmin --help
come altri hanno sottolineato.
Tenere presente che sebbene mariadDB carichi i dettagli di configurazione dai vari file my.cnf elencati nelle altre risposte qui, può anche caricarli da altri file con nomi diversi.
Ciò significa che se si esegue una modifica in uno dei file my.cnf, potrebbe essere sovrascritto da un altro file con un nome diverso. Per rendere il stick di modifica, è necessario modificarlo nel file di configurazione di destra (ultimo caricato) - o, forse, cambiarlo in tutti.
Quindi, come trovate tutti i file di configurazione che potrebbero essere caricati? Invece di cercare i file my.cnf, prova a eseguire:
grep -r datadir /etc/mysql/
Questo troverà tutti i luoghi in cui è menzionato il datadir. Nel mio caso, produce questa risposta:
/etc/mysql/mariadb.conf.d/50-server.cnf:datadir = /var/lib/mysql
Quando modifico quel file (/etc/mysql/mariadb.conf.d/50-server.cnf) per cambiare il valore di datadir, funziona, mentre cambiarlo in my.cnf no. Quindi qualunque opzione tu voglia cambiare, prova a cercarla in questo modo.
Dipende dal tuo accesso, ma per me questo lavoro sulla console sql phpmyadmin
MOSTRA VARIABILI;
poi dopo puoi cambiare alcune variabili che puoi fare
SET GLOBAL max_connections = 1000;
o
SET @@ GLOBAL.max_connections = 1000;
prova
locate my.cnf
per trovare dove sono tutti questi nomi di file