Научете за грешката MySQL/MariaDB „Грешка при установяване на връзка с база данни“ или „Не може да се свърже със сървъра на база данни“ и как да поправите тази грешка.
Ако MySQL е спрял да работи, скриптовете и уебсайтовете няма да могат да се свържат. На Linux сървър можете да видите дали MySQL работи, като използвате командата:
Това ще върне списък с работещи процеси, които имат "mysql" в името. Списъкът ще включва командата, която току-що изпълнихте. Ако MySQL работи, той ще включва и MySQL процеса.
Ако MySQL/MariaDB не работи, ще видите само вашата команда grep в списъка.
Стартирайте MySQL/MariaDB с командата:
CentOS 7 (MariaDB): systemctl start mariadbUbuntu и Debian (MySQL): service mysql start или /etc/init.d/mysqld startУверете се, че използвате правилното потребителско име и парола за вашия MySQL потребител. Те са различни от вашите идентификационни данни за вход в IONOS. Необходимите потребителско име и парола се задават, когато създавате базата данни MySQL.
Ще трябва също да зададете правилното име на хост.
След като разберете, че MySQL/MariaDB работи, следващата стъпка е да се свържете от командния ред с командата:
Трябва да бъдете подканени да въведете паролата на основния потребител на MySQL. По подразбиране паролата за root MySQL потребител е същата като оригиналната root парола за вашия сървър.
Забележка
Ако промените паролата за потребителя на root сървъра, това няма да промени паролата за потребителя на root MySQL.
След като въведете паролата, трябва да се озовете в MySQL/MariaDB клиента, който трябва да изглежда по следния начин:
Добре дошли в монитора на MariaDB. Командите завършват с ; или \g.Вашият идентификатор на връзка с MariaDB е 4172 Версия на сървъра: 5.5.44-MariaDB MariaDB ServerCopyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab и други. Въведете 'help;' или '\h' за помощ. Въведете '\c', за да изчистите текущия оператор за въвеждане. MariaDB [(няма)]>Ако имате проблеми с установяването на MySQL връзка с различно потребителско име и парола, направете този тест втори път, като замените root с друго потребителско име.
Ако вместо да влезете в клиента, получите грешка като тази:
ГРЕШКА 1045 (28000): Достъпът е отказан за потребител 'root'@'localhost' (използване на парола: ДА)Вие не въвеждате правилната парола за потребителското име. Проверете дали изписването на потребителското име и паролата е правилно. Имайте предвид, че потребителското име е чувствително към малки и главни букви - Root не е същото като root.
Продавайте на съществуващия си уебсайт или блог
Струва си да проверите, за да сте сигурни, че използвате правилния правопис и главни букви за потребителското име. За да изброите всички потребители на MySQL/MariaDB, влезте в клиента на командния ред като root с командата:
След това избройте всички потребители на MySQL и техните хостове с командата:
изберете хост, потребител от mysql.user;Това ще ви покаже потребителското име точно както е създадено, както и местоположението (хост), от което е разрешено да се свързва.
Забележка
Бъдете внимателни, когато използвате тази команда, особено когато нулирате паролата на основния MySQL потребител.
За да нулирате паролата на MySQL/MariaDB на потребител, влезте в клиента на командния ред като root с командата:
След това нулирайте паролата на потребителя с командата:
update mysql.user set password = MD5('(new_password)') where user = "jdoe";Заменете new_password с новата парола и jdoe с потребителското име.
Ако сте сигурни, че потребителското име и паролата са правилни, проблемът може да е, че потребителят няма правилните привилегии (грантове) за тази база данни.
За да проверите привилегиите на даден потребител (грантове), влезте в клиента на командния ред като root с командата:
След това покажете разрешенията на потребителя с командата:
покажи безвъзмездни средства за 'jdoe'@'localhost';Заменете jdoe с потребителското име. Ако е приложимо, променете localhost на името на хоста.
Трябва да получите списък с привилегиите, които потребителят има за съответната база данни. Трябва да изглежда нещо подобно:
+------------------------------------------------ -------------------------------------------------- --------------------+| ПРЕДОСТАВЯНЕ НА ИЗПОЛЗВАНЕ НА *.* НА 'jdoe'@'localhost', ИДЕНТИФИЦИРАН С ПАРОЛА '*CD2BAEA88178935C438649F12126752DB1B24D7B' || ПРЕДОСТАВЯЙТЕ ВСИЧКИ ПРИВИЛЕГИИ НА `example_database`.* НА 'jdoe'@'localhost'|+------------------------------ -------------------------------------------------- -------------------------------------+Имайте предвид, че този потребител има всички привилегии на база данни с име example_database.
Ако на потребителя не са предоставени привилегии за никакви бази данни, ще видите само нещо подобно:
+------------------------------------------------ -------------------------------------------------- ----------+| Безвъзмездни средства за jdoe@localhost |+------------------------------------------ -------------------------------------------------- ----------------+| ПРЕДОСТАВЯНЕ НА ИЗПОЛЗВАНЕ НА *.* НА 'jdoe'@'localhost', ИДЕНТИФИЦИРАН С ПАРОЛА '*00E247AC5F9AF26AE0194B41E1E769DEE1429A29' |+---------------------------- -------------------------------------------------- --------------------------------+1 ред в набор (0,00 сек)Имайте предвид, че този потребител има само USAGE привилегии на ".", и няма привилегии на никакви бази данни.
Използвайте прост скрипт, за да тествате дали вашата база данни ще приеме връзката. Създайте файл, наречен database-connection-test.php със следното съдържание:
Заменете думата парола с паролата на основния потребител на MySQL.
Поставете този файл във вашата уеб директория, след което го посетете в браузър. Ако можете да се свържете с root MySQL потребителско име и парола, тогава знаете, че вашата база данни приема връзки.
Ако имате проблеми с установяването на MySQL връзка с различно потребителско име и парола, направете този тест втори път, като замените root с другото потребителско име и парола с паролата.
Забележка
Не забравяйте да изтриете този файл, след като приключите с тестовете си.
Ако скриптът се хоства на същия сървър като MySQL базата данни (напр. вашият Linux Cloud Server), името на хоста е localhost по подразбиране.
За да проверите отново MySQL името на хоста, влезте в клиента на командния ред като root с командата:
След това покажете името на хоста с командата:
ПОКАЖЕТЕ ПРОМЕНЛИВИ, КЪДЕ Име на променлива = 'име на хост';Ако вашият скрипт има достъп до отдалечена база данни, името на хоста ще бъде URL адресът на тази база данни.
PREV: Apache показва, че работи, какво не е наред с моя виртуален хост ...
NEXT: Настройте уебсайт и виртуални хостове Apache в Ubuntu - Orangeable