Ошибка # 1251 - Невозможно войти на сервер MySQL - PullRequest
0 голосов
/ 20 июня 2019

Сегодня я купил VPS для использования в качестве моего нового сервера MySQL. Я установил MySQL, Apache, PHP и phpMyAdmin. Я настроил моего пользователя MySQL как «admin». Я могу войти в систему пользователя из командной строки, но не в phpMyAdmin. Я получаю ошибку #1251 Cannot log in to the MySQL server.

Проблема в новом Linux VPS, работающем под CentOS 6, MySQL 8.0.16 и Apache 2.2.15. Я перепробовал все, с чем столкнулся за последние 6 часов поиска в Google. Я создам список всего, что я пробовал, так как это будет легче читать.

- setting bind-address to 127.0.0.1
- putting my username and password into config.inc.php
- setting the host to 127.0.0.1 in config.inc.php
- trying sockets over TCP (and setting the host to localhost when using sockets)
- creating a soft-link shortcut from `/usr/share/phpmyadmin` to `/var/www/html/phpmyadmin`
- reinstalling and running mysql_secure_installation

и много чего еще не могу вспомнить в данный момент.

config.inc.php

$cfg['Servers'][$i]['host']          = '127.0.0.1'; // MySQL hostname or IP address
$cfg['Servers'][$i]['port']          = '';          // MySQL port - leave blank for default port
$cfg['Servers'][$i]['socket']        = '';          // Path to the socket - leave blank for default socket
$cfg['Servers'][$i]['connect_type']  = 'tcp';       // How to connect to MySQL server ('tcp' or 'socket')
$cfg['Servers'][$i]['extension']     = 'mysqli';    // The php MySQL extension to use ('mysql' or 'mysqli')
$cfg['Servers'][$i]['compress']      = FALSE;       // Use compressed protocol for the MySQL connection
                                                    // (requires PHP >= 4.3.0)
$cfg['Servers'][$i]['controluser']   = '';          // MySQL control user settings
                                                    // (this user must have read-only
$cfg['Servers'][$i]['controlpass']   = '';          // access to the "mysql/user"
                                                    // and "mysql/db" tables).
                                                    // The controluser is also
                                                    // used for all relational
                                                    // features (pmadb)
$cfg['Servers'][$i]['auth_type']     = 'cookie';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'admin';     // MySQL user
$cfg['Servers'][$i]['password']      = 'areallygoodpassword';  // MySQL password (only needed

httpd.conf

<IfModule php5_module>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

LoadModule php5_module modules/libphp5.so
AddType x-httpd-php .php
AddHandler php5-script .php

phpMyAdmin.conf

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   Order Allow,Deny
   Allow from All
</Directory>

my.cnf

bind-address=127.0.0.1

После всех попыток мне не повезло, и я все еще получаю ту же ошибку #1251 Cannot log in to the MySQL server. Любая помощь будет принята с благодарностью, так как я отчаялся.

РЕДАКТИРОВАТЬ: Проблема заключалась в том, что пароли моего пользователя были сохранены как caching_sha2_password вместо mysql_native_password. Смотрите ответ ниже.

1 Ответ

1 голос
/ 21 июня 2019
  1. Сначала попробуйте отключить SELinux с помощью команды
    setenforce 0

  2. проверка плагина пользователя, хоста и пароля с помощью запроса через приглашение MySQL.

SELECT user, host, plugin from mysql.user

Плагин должен быть установлен на "mysql_native_password, и хост должен быть localhost. Если это не так, вы можете обновить свой плагин с помощью: UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'admin'

и обновление хоста:

UPDATE mysql.user SET host = 'localhost' WHERE User = 'admin'

...