편집: 나는 이것이 실제로 그렇다고 믿는다복사~의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