Ответ 1
Это то, что вы ищете: sudo mysql --defaults-file=/etc/mysql/debian.cnf
MySql на Debian-base Linux обычно использует файл конфигурации с учетными данными.
Я установил сервер ubuntu 16.04. Сервер Mysql был установлен по умолчанию в нем. Когда я пытаюсь получить доступ к mysql с помощью mysql -u root -p
, я не могу войти в mysql, потому что у меня нет пароля. Есть ли пароль по умолчанию?
Я также пробовал с помощью --skip-grant-tables
, даже это не работает. Даже попытка войти в систему с помощью только mysql -u root
- это сбой.
Это то, что вы ищете: sudo mysql --defaults-file=/etc/mysql/debian.cnf
MySql на Debian-base Linux обычно использует файл конфигурации с учетными данными.
Mysql по умолчанию имеет подключаемый модуль аутентификации пользователя root как auth_socket
, который требует, чтобы системное имя пользователя и имя пользователя db были одинаковыми.
В частности, войдите в систему как root или sudo -i
и просто введите mysql
и вы sudo -i
систему как mysql root
, после чего вы сможете создавать других работающих пользователей.
Если у вас нет рута на хосте, я полагаю, вам не разрешено входить в mysql как root?
У меня была свежая установка mysql-server
на Ubuntu 18.10 и я не смог войти с паролем по умолчанию. Только тогда я узнал, что по умолчанию пользователь root проходит аутентификацию с использованием auth_socket
. Как и в ответе, когда плагин изменился на mysql_native_password
, мы можем использовать пароль по умолчанию для MySQL
$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Вы можете найти следующие строки там
user = debian-sys-maint
password = password_for_the_user
Тогда:
$ mysql -u debian-sys-maint -p
Enter password:
введите пароль от debian.cnf
mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| root | localhost | auth_socket |
| mysql.session | localhost | mysql_native_password |
| mysql.sys | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT;
Либо:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Или:
//Для MySQL 5. 7+
mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
--Update--
Иногда вам нужно будет перезапустить ваш сервер MySQL.
sudo service mysql restart
или
sudo systemctl restart mysql
Вы можете просто сбросить пароль root, запустив сервер с помощью -skip-grant-tables и войдя в систему без пароля, запустив следующую команду: root или sudo:
service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
# service mysql stop
# service mysql start
$ mysql -u root -p
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
попробуйте этот путь, я решил проблему с этим методом.Хотя это старый вопрос, некоторые из нас все еще пытаются найти ответ. По крайней мере, я сделал. Пожалуйста, не следуйте всем длинным решениям. Вы можете просто войти в свой mysql как root без предоставления пароля (при условии, что это новая установка или вы не меняли пароль с момента установки), добавив sudo перед вашей командой mysql.
$sudo mysql -uroot -p
mysql>
Это связано с тем, что mysql изменил модель безопасности в одной из последних версий.
Надеюсь это поможет
Я думаю, что еще одно место для поиска - /var/lib
. Если вы поедете туда, вы увидите три папки mysql с "интересными" разрешениями:
user group
mysql mysql
Вот что я сделал для решения моей проблемы с паролем root:
после запуска
sudo apt-get purge mysql*
sudo rm -rf /etc/mysql
Я также запускал следующее (вместо my_username put yours):
cd /var/lib
sudo chown --from=mysql <my_username> mysql* -R
sudo rm -rf mysql*
А потом:
sudo apt-get install mysql-server
который побудил меня выбрать новый пароль root. Я надеюсь, что это помогает
Просто запустите sudo dpkg-reconfigure mysql-server-5.7
Вы можете найти версию, которую вы установили, запустив dpkg --get-selections | grep mysql-server
dpkg --get-selections | grep mysql-server
Обратите внимание, что в системах Ubuntu, работающих под управлением MySQL 5.7 (и более поздних версий), корневой пользователь MySQL настроен на аутентификацию с использованием плагина auth_socket по умолчанию, а не с паролем. вам нужно будет переключить метод аутентификации с auth_socket на mysql_native_password
как сказал @BeNiza, они изменили модель безопасности. Я сделал следующие шаги, и это работает для MySQL 5.7.27 на Ubuntu 18.04
sudo apt install mysql-server
Программное обеспечение базы данных MySQL установлено, но его настройка еще не завершена.
Чтобы обезопасить установку, MySQL поставляется со скриптом, который спрашивает, хотим ли мы изменить некоторые небезопасные значения по умолчанию. Запустите сценарий, набрав:
sudo mysql_secure_installation
Вы должны нажать Y и нажимать клавишу ENTER при каждом запросе.
Это приведет к проблемам, если вы используете слабый пароль
Вы можете просто войти в свой mysql как пользователь root без указания пароля, добавив sudo перед вашей командой mysql.
sudo mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';
Если вы установите слабый пароль, вы увидите следующую ошибку:
ОШИБКА 1819 (HY000). Ваш пароль не соответствует требованиям текущей политики
mysql> FLUSH PRIVILEGES;
mysql> exit
Примечание. После настройки вашего корневого пользователя MySQL для аутентификации по паролю вы больше не сможете получить доступ к MySQL с помощью команды sudo mysql, использовавшейся ранее. Вместо этого вы должны выполнить следующее:
mysql -u root -p
После ввода пароля, который вы только что установили, вы увидите приглашение MySQL.