Debian & MySQL: mysqlcheck: command not found
Przy pracy z MySQL co jakiś czas warto zaoptymalizować poszczególne tabele. Szczególnie, że przy dłuższej pracy tabele w MySQL mają tendencje do tworzenia nadmiaru danych. Dodatkowo wszystko to powoduje wydłużenie wykonywania zapytań a tym samym powodując spadek wydajności naszych serwisów. Szybką metodą na optymalizację, sprawdzenie oraz naprawę baz jest wykonanie następującego polecenia:
mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
ale zamiast zapytania o hasło możemy ujrzeć:
a1:~# mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
-bash: mysqlcheck: command not found
Jak rozwiązać ten problem?
Okazuje się, że przy standardowej instalacji MySQL z repozytoriów Debiana (czyli sławne apt-get install) może mieć problem z umieszczaniem plików wykonywalnych. Efektem tego może być powyższy błąd (ten sam błąd pojawi się również przy próbie wykonanie backupu bazy za pomocą mysqldump).
Rozwiązanie tego problemu jest dość proste. Wystarczy najpierw zlokalizować plik mysqlcheck:
a1:~# locate mysqlcheck
/usr/local/mysql-5.1.41-linux-x86_64/bin/mysqlcheck
/usr/local/mysql-5.1.41-linux-x86_64/man/man1/mysqlcheck.1
/usr/local/mysql-5.1.41-linux-x86_64/mysql-test/r/mysqlcheck.result
/usr/local/mysql-5.1.41-linux-x86_64/mysql-test/t/mysqlcheck.test
Jeżeli się pojawi błąd z poleceniem locate należy zainstalować program locate (apt-get install locate) a następnie ponowić zapytanie.
Już widzimy, że nasz plik mysqlcheck jest umieszczony w /usr/local/mysql-5.1.41-linux-x86_64/bin/mysqlcheck. Teraz wystarczy wykonać polecenie:
a1:~# cp /usr/local/mysql-5.1.41-linux-x86_64/bin/mysqlcheck /usr/bin
Aby sprawdzić czy nasze polecenie już działa poprawnie wykonujemy:
a1:~# mysqlcheck
Powinien się pojawić następujący komunikat (tutaj publikujemy jego fragment)
mysqlcheck Ver 2.5.0 Distrib 5.1.41, for unknown-linux-gnu (x86_64)
By Jani Tolonen, 2001-04-20, MySQL Development TeamThis software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license.
This program can be used to CHECK (-c,-m,-C), REPAIR (-r), ANALYZE (-a)
or OPTIMIZE (-o) tables. Some of the options (like -e or -q) can be
used at the same time. Not all options are supported by all storage engines.
Please consult the MySQL manual for latest information about the
above. The options -c,-r,-a and -o are exclusive to each other, which
means that the last option will be used, if several was specified.
czyli polecenie jest już widoczne w systemie. Teraz nie pozostaje Nam nic innego jak wykonać polecenie:
mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
Zostaniemy poproszeni o podanie hasła i program zacznie wykonywać sprawdzenie, naprawę oraz optymalizację baz danych w MySQL.