Я настраиваю новый сервер и продолжаю сталкиваться с этой проблемой.
Когда я пытаюсь войти в базу данных MySQL от имени пользователя root, я получаю сообщение об ошибке:
ОШИБКА 1698 (28000): доступ запрещен для пользователя 'root' @ 'localhost'
Не имеет значения, подключаюсь ли я через терминал (SSH), через PHPMyAdmin или клиент MySQL, например, Navicat. Все они терпят неудачу.
Я посмотрел в таблице mysql.user и получил следующее:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Как видите, root должен иметь доступ.
Сервер довольно прост, так как я пытался устранить это некоторое время сейчас ..
Он работает под управлением Ubuntu 16.04.1 LTS с Apache, MySQL и PHP, чтобы он мог размещать веб-сайты, и iRedMail 0.9.5-1, чтобы он мог размещать почту.
Вход в базу данных MySQL работает нормально, прежде чем я установлю iRedMail. Я тоже пробовал, просто устанавливая iRedMail, но потом root тоже не работает ...
Если кто-то может сказать мне, как я могу исправить мою проблему входа в MySQL или как я устанавливаю iRedMail, поверх существующей установки MySQL. И да, я попробовал советы по установке, и я не могу найти эти переменные в файлах конфигурации.
sudo mysql_secure_installation
проще всего это исправитьОтветы:
В некоторых системах, таких как Ubuntu, mysql по умолчанию использует плагин UNIX auth_socket .
В основном это означает, что: db_users, использующий его, будет « авторизован» учетными данными пользователя системы. Вы можете увидеть,
root
настроен ли ваш пользователь следующим образом:Как вы можете видеть в запросе,
root
пользователь используетauth_socket
плагинЕсть 2 способа решить эту проблему:
mysql_native_password
плагинаdb_user
с вамиsystem_user
(рекомендуется)Опция 1:
Вариант 2: (замените YOUR_SYSTEM_USER на ваше имя пользователя)
Помните, что если вы используете опцию №2, вам нужно будет подключиться к mysql в качестве имени пользователя вашей системы (
mysql -u YOUR_SYSTEM_USER
)Примечание. В некоторых системах (например, в Debian stretch) плагин auth_socket называется unix_socket , поэтому соответствующая команда SQL должна выглядеть так:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Обновление: из комментария @ andy кажется, что mysql 8.xx обновлен / заменен,
auth_socket
потомуcaching_sha2_password
что у меня нет системной настройки с mysql 8.xx, чтобы проверить это, однако шаги, описанные выше, должны помочь вам понять проблему. Вот ответ:Одно из изменений в MySQL 8.0.4 заключается в том, что новый подключаемый модуль аутентификации по умолчанию - caching_sha2_password. Новый 'YOUR_SYSTEM_USER' будет иметь этот плагин auth, и теперь вы можете войти в оболочку bash с помощью "mysql -u YOUR_SYSTEM_USER -p" и предоставить пароль для этого пользователя в приглашении. Нет необходимости в шаге «UPDATE user SET plugin». Обновление плагина аутентификации по умолчанию для 8.0.4 см. По адресу https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/.
источник
sudo gedit /etc/phpmyadmin/config.inc.php
. Затем я выполнил поискAllowNoPassword
и раскомментировал обе строки, которые содержали его. Тогда я смог войти в систему как root без пароля.IDENTIFIED BY ''
бит должен , вероятно,IDENTIFIED BY 'YOUR_PASSWD'
mysqld_safe --skip-grant-tables
т. Д.", И это не работает.sudo mysql -u root -p
меня не пускают?Проверьте здесь:
Новая версия MYSQL делает это таким образом.
В новом my-sql, если при установке пароль оставлен пустым, он основан на
auth_socket
плагине.Правильный способ - войти в my-sql с
sudo
привилегиями.А затем обновить пароль с помощью:
Как только это будет сделано,
stop and start
MySQL сервер.Для получения полной информации вы можете обратиться по этой ссылке .
Прокомментируйте любые сомнения.
источник
У меня была эта проблема на виртуальной машине Debian 8, с которой я взаимодействовал через Putty на моем рабочем столе Windows 10.
Я попробовал различные предложения здесь, но ничего не получилось, и я запускаю MariaDB на хосте Debian. В конце концов я обнаружил, что не могу запустить сервер БД в безопасном режиме, но мне это не нужно, и следующие команды действительно работают для меня, то есть позволяют вновь созданному пользователю MySql войти на сервер MySql / MariaDB:
Если вышеупомянутое не совсем работает для вас, выполните шаги, описанные в сообщении zetacu выше ( zetacu ), а затем следуйте моим инструкциям .
Теперь вы должны иметь возможность использовать клиент удаленного терминала и безопасно войти в MySQL, используя команду:
* введите пароль при появлении запроса
источник
Я бы предложил удалить соединение Mysql -
ОБНОВЛЕНИЕ-Это для Mysql версии 5.5, если ваша версия отличается, пожалуйста, измените первую строку соответственно
И установите снова Но на этот раз установите пароль пользователя root. Это сэкономит много усилий.
источник
После нескольких часов борьбы без решения, это сработало для меня, тогда я нашел видео на YouTube, где говорится, что столбец пароля теперь называется authentication_string. Таким образом, я смог изменить свой пароль следующим образом: сначала войдите в MySQL из терминала
тогда внутри mysql наберите что угодно после mysql>
в этот момент вы вышли из mysql обратно в ваше обычное конечное место. Вам нужно перезапустить mysql, чтобы это вступило в силу. для этого типа следующее:
Обратитесь к этой видео ссылке для лучшего понимания
источник
шаг 1.
sudo mysql -u root -p
шаг 2.
USE mysql;
шаг 3.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Здесь «admin» - ваш новый пароль, вы можете изменить его.
Шаг 4
exit
Спасибо. Вы сделали.
источник
Нет необходимости судо
База данных инициализируется с двумя учетными записями всех привилегий: первая - «root», которая недоступна, а вторая - с вашим именем пользователя (проверьте с помощью команды
whoami
).Чтобы разрешить доступ к учетной записи root, вам необходимо войти под своим именем пользователя
и вручную сменить пароль на root
Войти как root
источник
Первый шаг: перейдите в /etc/phpmyadmin/config.inc.php, затем раскомментируйте строки, где вы найдете AllowNoPassword. Второй шаг: войдите в свою учетную запись mysql по умолчанию
и это все!
источник
Это сработало для меня:
источник
Я также столкнулся с той же проблемой в первый раз.
Теперь это исправлено:
Сначала вы копируете
/etc/mysql/mysql.conf.d/mysqld.cnf
файл и переходите в/etc/mysql/my.cnf
.Вы можете сделать это командой:
Теперь давайте восстановим пароль:
Используйте следующие команды в вашем терминале:
Теперь вы находитесь в консоли MySQL.
Тогда давайте напишем несколько запросов для сброса нашего корневого пароля
Теперь мы можем очистить
/etc/mysql/my.cng
Откройте файл выше в вашем редакторе и удалите целые строки внутри файла.
После этого давайте перезапустим mysql:
Теперь давайте использовать mysql с вновь созданным паролем:
Наконец введите ваш новый пароль.
источник
Я нашел свое решение после нескольких часов исследований здесь.
Стоп MySQL
Сделать сервисный каталог MySQL.
Дайте пользователю MySQL разрешение на запись в каталог службы.
Запустите MySQL вручную, без проверки разрешений или работы в сети.
Войти без пароля.
обновить пароль
Отключи MySQL.
Запустите службу MySQL в обычном режиме.
источник
Вы хотите получить доступ к MySQL от имени пользователя root, но не предоставляете правильный пароль пользователя root.
Если вам нужно установить новый пароль для root , на сайте MySQL есть отличная документация о том, как это сделать: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Я не буду показывать процесс здесь, потому что документация MySql по вышеуказанной ссылке понятна и лаконична .
источник
ОС: Ubuntu18.04
MySQL: 5,7
добавить
skip-grant-tables
в конец файла mysqld.cnfcp the my.cnf
skip-grant-tables
из my.cnfvalidate_password
обратите внимание, вы должны знать, что ваша ошибка вызвана чем? validate_password_policy?
Вы должны изменить свой пароль, чтобы заполнить политику или изменить политику.
источник
Это случилось и со мной. Проблема заключается в репозитории mysql, который уже входит в дистрибутив Linux. Поэтому, когда вы просто делаете это:
$ sudo apt install mysql-server
он устанавливает mysql из репозитория по умолчанию, что создает эту проблему. Таким образом, чтобы преодолеть это вам необходимо удалить установленный MySQL$ sudo apt remove mysql* --purge --auto-remove
Затем загрузите репозиторий MySQL с официального веб-сайта MySQL APT Repo. Следуйте их документации о том, как добавить репо и установить его. Это не дает проблемы. Также, ответив @zetacu, вы можете проверить, что root в mysql теперь действительно использует плагин mysql_native_password.
источник
в моем случае,
Я уверен, что мой пароль был правильным, иначе код ошибки будет
ERROR 1045 (28000): Access denied for user
так что я заново использую sudo,
на этот раз у меня получилось. смотри документы
а затем измените пароль root,
затем перезапустите сервер, используя
sudo /etc/init.d/mysql restart
источник