Odpowiedzi:
Nie ma wewnętrznej komendy MySQL do śledzenia tego, jest to trochę zbyt abstrakcyjne. Plik może znajdować się w 5 (lub więcej?) Lokalizacjach i wszystkie będą poprawne, ponieważ ładują kaskadowo.
Są to domyślne lokalizacje, na które patrzy MySQL. Jeśli znajdzie więcej niż jeden, załaduje każdą z nich, a wartości się zastąpią (chyba w podanej kolejności). Ponadto --defaults-file
parametr może zastąpić całość, więc ... w zasadzie jest to ogromny ból w tyłku.
Ale dzięki temu, że jest tak mylący, istnieje duża szansa, że znajduje się w /etc/my.cnf.
(jeśli chcesz tylko zobaczyć wartości: SHOW VARIABLES
ale potrzebujesz do tego uprawnień).
/etc/init.d/mysqld restart
.
my.cnf
znajduje się w /etc/mysql/my.cnf
.
mysql --help
a zobaczysz 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
wskazujące na inne dowiązanie symboliczne, /etc/alternatives/my.cnf
które wskazuje etc/mysql/mysql.cnf
.
ls /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
Możesz faktycznie „poprosić” MySQL o listę wszystkich lokalizacji, w których szuka on my.cnf (lub my.ini w systemie Windows). Nie jest to jednak zapytanie SQL. Zamiast tego wykonaj:
$ mysqladmin --help
lub przed 5.7:
$ mysqld --help --verbose
W pierwszych wierszach znajdziesz wiadomość z listą wszystkich poszukiwanych lokalizacji my.cnf. Na mojej maszynie jest to:
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
Lub w systemie 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
Należy jednak pamiętać, że może się zdarzyć, że w żadnym z tych miejsc nie ma pliku my.cnf . Możesz więc utworzyć plik samodzielnie - użyj jednego z przykładowych plików konfiguracyjnych dostarczonych z dystrybucją MySQL (w systemie Linux - zobacz /usr/share/mysql/*.cnf
pliki i użyj tego, co jest dla Ciebie odpowiednie - skopiuj go, /etc/my.cnf
a następnie zmodyfikuj w razie potrzeby).
Zauważ też, że istnieje również opcja wiersza poleceń,--defaults-file
która może definiować niestandardową ścieżkę do pliku my.cnf lub my.ini. Tak jest na przykład w przypadku MySQL 5.5 w systemie Windows - wskazuje on na plik my.ini w katalogu danych, który zwykle nie jest wymieniony na liście mysqld --help --verbose
. W systemie Windows - sprawdź właściwości usługi, aby dowiedzieć się, czy tak jest w Twoim przypadku.
Na koniec sprawdź https://dev.mysql.com/doc/refman/8.0/en/option-files.html - jest tam opisany bardziej szczegółowo.
Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
- Spodziewałem się pierwszych 2 plików w odwrotnej kolejności.
mysqld --help --verbose
zaprzeczają temu, co podano w dev.mysql.com/doc/refman/5.5/en/option-files.html . Według mojego najnowszego doświadczenia z wersją 5.6, informacje na stronie są najbardziej poprawne i odpowiednie. Priorytet lokalizacji plików podany przez polecenie help wprowadza w błąd i doprowadzi do negatywnych wyników.
Zawsze możesz uruchomić find w terminalu.
find / -name my.cnf
find / -name my.cnf
jest najlepszym rozwiązaniem, ale możesz również sprawdzić swój katalog domowy i /etc/mysql/my.conf Możesz również sprawdzić, czy MYSQL_HOME jest ustawiony, wpisując echo $MYSQL_HOME
terminal
~/.my.cnf
- zanotuj wiodącą kropkę w nazwie pliku. Również uruchomienie wyszukiwania w całym systemie plików zwykle generuje bloki błędów „Odmowa zezwolenia”, chyba że jesteś rootem. Tak powinno być polecenie find find / -name '*my.cnf' 2>/dev/null
.
Możesz użyć :
locate my.cnf
whereis my.cnf
find . -name my.cnf
whereis
nie będzie tu działać; szuka lokalizacji odpowiadających poleceniu i nie może znaleźć dowolnych plików.
To może działać:
strace mysql ";" 2>&1 | grep cnf
na mojej maszynie wyświetla to:
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)
Wygląda więc na to, że /etc/mysql/my.cnf jest tym, ponieważ stat64 () i read () zakończyły się powodzeniem.
mysql --help | grep /my.cnf | xargs ls
poinformuje Cię, gdzie my.cnf
znajduje się na 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
W tym przypadku jest w /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
W tym przypadku jest w /usr/local/etc/my.cnf
Domyślnie mysql najpierw przeszukuje my.cnf w folderze / etc. Jeśli w tym folderze nie ma pliku /etc/my.cnf, radzę utworzyć nowy w tym folderze, jak wskazano w dokumentacji ( https://dev.mysql.com/doc/refman/5.6/en/option -files.html ).
Możesz także wyszukać istniejący plik my.cnf dostarczony przez instalację mysql. Możesz uruchomić następujące polecenie
sudo find / -name "*.cnf"
Możesz użyć następującego pliku konfiguracyjnego z tabelą myisam i bez obsługi mysql innodb (z instalacji portu mysql na Mac OS X Maverick). Sprawdź każde polecenie w tym pliku konfiguracyjnym.
# 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
Jak zauważył konyak, możesz uzyskać listę miejsc, w których mysql będzie szukał twojego my.cnf
pliku, uruchamiając mysqladmin --help
. Ponieważ jest to dość szczegółowe, możesz szybko przejść do części, na której Ci zależy:
$ mysqladmin --help | grep -A1 'Default options'
To da ci wynik podobny do:
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
W zależności od sposobu zainstalowania mysql możliwe jest, że żaden z tych plików nie jest jeszcze obecny. Możesz cat
je zrobić , aby zobaczyć, jak tworzona jest konfiguracja, i w my.cnf
razie potrzeby utwórz własną w preferowanej lokalizacji.
W systemie Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf
For Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf
Nie wiem, jak skonfigurowałeś MySQL w środowisku Linux, ale czy sprawdziłeś?
Spróbuj uruchomić mysqld --help --verbose | grep my.cnf | tr " " "\n"
Wynik będzie podobny
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf
Jeśli korzystasz z komputera Mac z Homebrew, użyj
informacje o zaparzeniu mysql
Zobaczysz coś takiego
$ 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) *
Ostatnia linia to INSTALLERDIR
dokumentacja MySQL
Będziesz musiał przejrzeć różne lokalizacje w zależności od wersji 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
Możesz także uruchomić to polecenie.
mysql --help | grep cnf
grep
z findstr
: mysql --help | findstr cnf
i to nie magia
W systemie Ubuntu (edycja bezpośrednia):
$ sudo nano /etc/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
Zainstalowałem pakiet xampp z apache, php and mysql
in Ubuntu . Tam my.cnf
plik znajduje się w /opt/lampp/etc/
folderze. Mam nadzieję, że to komuś pomoże.
Jeśli używasz MAMP, przejdź do Szablony> MySQL (my.cnf)> [wersja]
Jeśli korzystasz z MAMP bez okien, może być konieczne dostosowanie paska narzędzi za pomocą przycisku Dostosuj.
Jeśli korzystasz z VPS i próbujesz edytować plik my.cnf na już działającym serwerze, możesz spróbować:
ps aux | grep mysql
Zostaną wyświetlone parametry, które jest uruchamiane polecenie mysql i gdzie --defaults-file
wskazują punkty
Pamiętaj, że twój serwer może być uruchomiony na więcej niż jednym serwerze MySQL / MariaDB. Jeśli zobaczysz wiersz bez --defaults-file
parametru, to instancja może pobierać konfigurację z plików .cnf, o których wspomniano, mysqladmin --help
jak zauważyli inni.
Należy pamiętać, że chociaż mariadDB ładuje szczegóły konfiguracji z różnych plików my.cnf wymienionych w innych odpowiedziach tutaj, może również ładować je z innych plików o różnych nazwach.
Oznacza to, że jeśli dokonasz zmiany w jednym z plików my.cnf, może zostać zastąpiony innym plikiem o innej nazwie. Aby zmiana pozostała niezmienna, musisz ją zmienić we właściwym (ostatnio załadowanym) pliku konfiguracyjnym - lub, być może, zmienić we wszystkich.
Jak znaleźć wszystkie pliki konfiguracyjne, które mogą zostać załadowane? Zamiast szukać plików my.cnf, spróbuj uruchomić:
grep -r datadir /etc/mysql/
Znajduje to wszystkie miejsca, w których wspomniany jest datadir. W moim przypadku daje to odpowiedź:
/etc/mysql/mariadb.conf.d/50-server.cnf:datadir = /var/lib/mysql
Kiedy edytuję ten plik (/etc/mysql/mariadb.conf.d/50-server.cnf) w celu zmiany wartości datadir, działa, a zmiana w my.cnf nie. Niezależnie od tego, którą opcję chcesz zmienić, spróbuj poszukać jej w ten sposób.
To zależy od twojego prawa dostępu, ale dla mnie ta praca na konsoli phpmyadmin sql
POKAŻ ZMIENNE;
potem po, aby zmienić niektóre zmienne, które możesz zrobić
ZESTAW GLOBALNY max_connections = 1000;
lub
ZESTAW @@ GLOBAL.max_connections = 1000;
Spróbuj
locate my.cnf
aby dowiedzieć się, gdzie są wszystkie takie nazwy plików