mysql-server를 새로 설치한 후 mysql root -u를 사용하여 로그인할 수 없습니다.

mysql-server를 새로 설치한 후 mysql root -u를 사용하여 로그인할 수 없습니다.

편집: 나는 이것이 실제로 그렇다고 믿는다복사~의https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04
나는 해당 페이지에서 가장 좋은 답변을 사용했고 효과가 있었습니다.


방금 새로운 Linux Mint 18 MATE를 설치하고 Mysql을 설치하려고 했습니다. 나는 다음과 같이 이 작업을 수행합니다.

sudo apt-get install mysql-server

이미 설치되어있다

mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrappe

이것은 나에게 비밀번호를 묻는 여러 "gui" 화면을 거쳤습니다. 모든 항목에 대해 Enter 키를 쳤는데, 이는 "비밀번호 없음"이라고 말하는 것과 같습니다.

그런데 지금은 들어갈 수 있을 줄 알았는데 mysql -u root말이에요.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

만일을 대비해 재부팅을 시도했습니다. 올바른 비밀번호를 사용하지 않는 것이 문제인가요, 아니면 더 근본적인 문제가 있는 건가요? 비밀번호인 경우 어떻게 확인/재설정하나요? 고마워요, 맥스

편집: 아래 f35의 답변을 바탕으로 다음을 수행했습니다.

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -u root

그런 다음 mysql에서 비밀번호를 변경하려고 시도했지만 필드 이름을 인식하지 못했습니다. 내용을 확인하기 위해 설명을 수행합니다.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set password=PASSWORD("password") where User='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> desc user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| References_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | mysql_native_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)

다음에 무엇을 해야 할지 잘 모르겠습니다. 또한 비밀번호를 설정하지 않는 구문은 무엇입니까? 응 set password=''?

참고: debian-sys-main 사용자를 사용하여 로그인할 수도 있지만 여전히 루트 사용자의 비밀번호를 변경하는 방법을 모르겠습니다.

내 mysql 버전은 다음과 같습니다. 서버 버전: 5.7.16-0ubuntu0.16.04.1(Ubuntu)

답변1

1) mysql-server를 재구성해 볼 수 있습니다:

sudo dpkg-reconfigure mysql-server

2) debian-sys-maint 비밀번호가 있는지 확인하세요.

cat /etc/mysql/debian.cnf

그리고 확인하세요:

user     = debian-sys-maint
password = xxxxGx0fSQxxGa

debian-sys-maint에는 mysql 서버에 대한 모든 권한이 있습니다.

3) 문제가 여전히 해결되지 않으면 비밀번호를 재설정할 수 있습니다.

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD("NewPasswd") where User='root';
mysql> flush privileges;
mysql> quit

sudo service mysql stop
sudo service mysql start
mysql -u root -p

답변2

Ubuntu 20.10에 MySQL 8.0.24를 새로 설치한 후 로그인할 수 없습니다.

mysql -u root

이로 인해

오류 1698(28000): "root"@"localhost" 사용자에 대한 액세스가 거부되었습니다.

그런데 로그인이 되더라구요

sudo mysql -u root

아마도 리눅스의 슈퍼유저가 루트이기 때문인 것 같습니다.

답변3

CentOS 8에서 이 작업을 수행해야 합니다.

# In regular terminal
sudo systemctl stop mysqld
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking --user root
mysql -u root

# In MySQL terminal
use mysql;
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'My^Pass1';
exit

# In regular terminal
sudo pkill mysqld
sudo systemctl start mysqld
mysql -u root -p

답변4

허용된 답변에 몇 가지 문제가 발생했습니다.

처음 실행했을 때 sudo service mysql stop서비스가 중지되지 않았지만 그 사실을 깨닫지 못했습니다. ps -fe | grep mysql따라서 다음 명령을 실행하기 전에 프로세스가 완료되었는지 확인하십시오 . 몇 번의 시도 끝에 마침내 sudo kill -KILL <mysqld process id>.

그런 다음 sql update를 실행한 후 service mysql stop다시 작동하지 않습니다. 따라서 프로세스 ID를 확인하신 후 ps -fe | grep mysqld_safe아래 안내에 따라 사용하시기 바랍니다. sudo kill -TERM <process id>프로세스가 여러 개인 경우 ID가 가장 낮은 프로세스를 사용하세요.

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD("NewPasswd"), plugin='mysql_native_password', host='%' where User='root';
mysql> flush privileges;
mysql> quit

sudo kill -TERM <mysqld_safe process id>
sudo service mysql start
mysql -u root -p

관련 정보