Я не могу точно воспроизвести проблему, но ситуация была следующей (код представлен приблизительно): <br/><br/><pre><code class="php">$container = new Container(); $container->set('settings', fn() => [ 'database' => [ 'dsn' => 'mysql:host=' . env('DB_HOST', 'example') . ';dbname=' . env('DB_NAME', 'example'), 'username' => env('DB_USER', 'example'), 'password' => env('DB_PASS', 'example') ] ]); $settings = $container->get('settings'); var_dump($settings); // 'database' => ['dsn' => 'mysql:host=127.0.0.1;dbname=example', 'username' => 'root', 'password' => 'root'] $container->set(PSO::class, function() use ($settings) { $database = $settings['database']; return new PDO( $database['dsn'], $database['username'], $database['password'] // здесь, возможно, возникнет ошибка ); }); var_dump($container->get(PDO::class)); // ожидается object(PDO), но результат - Connection refused, ошибка связана с использованием $database['password']</code></pre> <br/><br/> В трассировке, которую я помню, упоминалось нечто вроде: <br/><br/> new PDO('mysql:host=127.0.0.1;dbname=example', 'root', '[ <b>какой-то_неприкосновенный_параметр</b> ]'), к сожалению, точный текст не сохранился, но я помню, что там не слово "неприкосновенный", а что-то другое. <br/><br/> Я понимаю, что проблема может быть связана с конфликтом из-за пароля 'root', но это новое для меня, так как ранее, работая на разных версиях Linux, у меня не возникало подобных проблем. В последнем дистрибутиве, который я использовал - AltLinux Рабочая станция К 10, все работало исправно, а вот с переходом на AltLinux Рабочая станция К 11 BETA, возникли сложности при настройке MySQL по <a href="https://www.al
Проблема, с которой вы сталкиваетесь, может быть связана с несколькими аспектами, когда вы используете пароль "root" для подключения к MySQL. Вот несколько возможных причин и их объяснение: 1. **Проблемы с правами доступа**: MySQL имеет разные уровни доступа для пользователей. Пользователь `root` может находиться на локальном хосте (127.0.0.1) или на удалённом сервере, и для каждого из них могут быть разные настройки прав. Убедитесь, что пользователь `root` имеет доступ из того хоста, с которого вы пытаетесь подключиться (например, через `localhost` или `127.0.0.1`). 2. **Настройки пароля**: В последних версиях MySQL и MariaDB могут быть различные механизмы аутентификации. Например, если для пользователя `root` назначен другой метод аутентификации (например, `auth_socket`), он не сможет подключиться с использованием пароля. Чтобы проверить это, выполните команду в MySQL: ```sql SELECT user, host, authentication_string, plugin FROM mysql.user WHERE user='root'; ``` Если значение `plugin` для пользователя `root` отличается от `mysql_native_password`, вам нужно изменить его или использовать другой пользователь. 3. **Конфликты с версиями**: Как вы упомянули, различные версии дистрибутивов и SQL-серверов могут по-разному обрабатывать подключения. Возможно, в новой версии вашего дистрибутива MySQL были изменены настройки по умолчанию, включая ограничения на пользователя `root`. 4. **Ошибка в строке подключения**: Убедитесь, что строка подключения формируется корректно, и что передаваемые параметры (такие как `dsn`, `username`, `password`) передаются без дополнительных символов или пробелов, которые могут возникнуть из-за ошибок в коде. 5. **Отладка ошибки**: Если вы получите сообщение об ошибке вроде "Connection refused", это может указывать не только на неправильный пароль, но и на то, что сервер MySQL не запущен или недоступен. Проверьте статус сервера и попытайтесь подключиться через командную строку с теми же настройками. ### Рекомендации по устранению проблемы: - Проверьте доступность сервера MySQL и выполните подключение через `mysql` CLI, чтобы убедиться, что учетные данные работают. - Измените метод аутентификации для `root` на `mysql_native_password`, если это необходимо: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; ``` - Пересмотрите параметры конфигурации MySQL, особенно те, что касаются аутентификации пользователей. Надеюсь, эта информация поможет вам разобраться с проблемой, связанной с использованием пароля "root" для подключения к базе данных.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
У вас пользователь 'root'@'localhost', а вы пытаетесь подключиться под 'root'@'127.0.0.1', в некоторых системах это довольно большая разница.