Така че това е много сложен проблем.
Защото от това, което описахте (много подробно), все още има много възможни причини за този проблем.
ВЪПРОС: Ето някои обобщени въпроси за вашия (от моя опит):
- Вашият
MySQL not running
се случи по време на първото ви стартиране (xampp start / xampp startmysql)? - След инсталирането на xampp в Linux, персонализирали ли сте конфигурацията на MySQL (по подразбиране etc/my.cnf)?
- АКО СА ПЕРСОНАЛИЗИРАНИ Персонализирахте ли директорията на вашата база данни на друго място (по подразбиране /opt/lampp/var/mysql)?
- АКО НЕ Е ПЕРСОНАЛИЗИРАНО Както споменахте, имате достъп до командния ред mysql, опитвали ли сте да SQL базата данни или ако базата данни дори не е била достъпна (което означава, че mysql сървърът, наречен mysqld, не е стартирал правилно)?
- Инициализирали ли сте лично/инсталирали ли сте mysql база данни (по подразбиране bin/mysql_install_db)? Добре, тези по-горе въпроси трябва да предоставят основна идея за отстраняване на проблеми.
РЕШЕНИЕ:
1. проблем с регистъра на грешкита
Така че това трябва да е най-простият проблем и може да ни помогне да идентифицираме по-добре причините за грешката.
Проверете
а) в конфигурацията на MySQL (my.cnf) какъв е вашият работещ потребител? това трябва да е параметър под [mysqld] user=... (по подразбиране mysql), приемаме, че нашата конфигурация е зададена на mysql
б) имате ли акаунт за изпълнение на командата user try terminal id -u mysql
, ако върне идентификационен номер, тогава акаунтът съществува, в противен случай трябва да ви каже no such user
. Трябва да имате този потребител, за да стартирате mysql сървър и да пишете дневник за грешки (като погледнете втората част на вашия терминален запис, вашият акаунт трябва да съществува)
c) проверете местоположението на регистрационния файл за грешки в конфигурацията на MySQL (my.cnf), то трябва да е под [mysqld] като параметър log-error=... ако това не е написано, добавете към него (трябва да е под [mysqld]).
г) проверете всяка директория на вашия дневник пълния път, който (например /var/log/mysql/error.log)
- /var трябва да има
read
иexecute
правомощия за потребител на mysql (което е най-малко ******r-x) прехвърляне на права за създаване на файл (изпълнение) - /var/log трябва да има
read
иexecute
правомощия за потребител на mysql (което е най-малко ******r-x) прехвърляне на права за създаване на файл (изпълнение) - /var/log/mysql трябва да има
read
,write
иexecute
правомощия за потребител на mysql (който е ******rwx) правомощия за създаване и запис на файл
За да може вашият файл error.log да бъде създаден тук, ако все още не работи, опитайте да го създадете ръчно със собственик като mysql, група като mysql и правомощия 660.
2. Състояние на работа на MySQL сървъра
има няколко подхода за проверка на това
а) използвайте mysql.server (по подразбиране bin/mysql.server), за да направите mysql.server status
команда. Ако вашият MySQL сървър работи, той трябва да покаже УСПЕХ! MariaDB работи.
б) използвайте top
команда, за да проверите дали услугата работи, или използвайте top | grep "mysqld"
. mysqld
и mysqld_safe
трябва в него.
в) влезте в командния ред на mysql точно както направихте в терминален запис 4 (този работи част) и изпълнете командата SHOW DATABASES;
това също трябва да работи.
3. Персонализираното местоположение на базата данни причинява състоянието на Xampp mysql да не работи Това е много по-дълбок проблем, защото потвърдих, че MySQL сървърът работи правилно.
Аз го направих
[[email protected] ~]# /opt/lampp/xampp status
Version: XAMPP for Linux 7.4.1
Apache is running.
MySQL is not running.
ProFTPD is running.
[[email protected] ~]# /opt/lampp/bin/mysql.server status
SUCCESS! MariaDB running (xxxx)
Така че това показва, че xampp извлича състоянието на услугата неправилно (като друга публикация База данни MySQL стартира на терминал, но не и на XAMPP )
Бих могъл да проследя подробно как работи xampp, но в /opt/lampp/xampp
скриптов файл, намерих /opt/lampp/share/xampp/status
и /opt/lampp/share/statusraw
Отидете по-нататък в него (и двете /opt/lampp/share/xampp/status
и /opt/lampp/share/statusraw
файл),
/opt/lampp/var/mysql/` /bin/hostname`.pid mysqld
Тъй като моята база данни беше персонализирана към локализирана директория, това означава, че pid файлът няма да бъде в /opt/lampp/var/mysql
, и това състояние винаги ще се връща неправилно.
Така че промяната на това в моя собствена база данни pid местоположение реши проблема.