source

Mysql (MariaDB 10.0.29) :루트 패스워드를 설정해도 패스워드를 묻지 않고 로그인할 수 있습니까?

bestscript 2022. 10. 23. 11:41

Mysql (MariaDB 10.0.29) :루트 패스워드를 설정해도 패스워드를 묻지 않고 로그인할 수 있습니까?

root 비밀번호를 설정하여 mysql을 보호하고 싶습니다.루트 암호를 재설정했습니다.

MariaDB [(none)]> select Host, User, Password from mysql.user;
+-----------+------+-------------------------------------------+
| Host      | User | Password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *58319282EAB9E38D49CA25844B73DA62C80C2ABC |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)

단, 플래시 권한을 가진 후 Mysql을 재시작하면 비밀번호를 입력하지 않고도 (로컬호스트의) mysql에 로그인할 수 있습니다.

root@myhost:/# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.0.29-MariaDB SLE 12 SP1 package

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

접속할 때 mysql에게 패스워드를 물어보는 방법을 알려주세요.감사합니다!

MySQL 테이블에는 plugin이라는 열이 있습니다.

MariaDB [(none)]> SELECT host, user, password, plugin FROM mysql.user LIMIT 0,1;
+-----------+------+-------------------------------------------+--------+
| host      | user | password                                  | plugin |
+-----------+------+-------------------------------------------+--------+
| localhost | root | *                                         |        |
+-----------+------+-------------------------------------------+--------+
1 row in set (0.00 sec)

mariaDB 설치를 위한 기본 플러그인은 'console' 또는 'unix_socket'이며, 이 플러그인은 콘솔에서 비밀번호 없이 입력할 수 있습니다.다만, 패스워드를 사용한 인증도 무효로 해, 다른 클라이언트로부터는 접속할 수 없습니다.

플러그인 필드를 빈 (') 값으로 업데이트하고 FLUSH PRIVALY PRIVALES를 사용합니다.

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;

이것으로 문제를 해결할 수 있습니다.

나는 이것을 바꿀 필요가 있다는 것을 알았다.

UPDATE mysql.user SET plugin = 'auth_socket' WHERE user = 'root' AND host = 'localhost';

로.

 UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND host = 'localhost';

이 플러그인은 AFAICT 비밀번호 플러그인입니다.

이 질문이 오래된 것은 알지만, 같은 문제가 있어서 다음 절차로 문제를 해결했습니다.

Linux 터미널에서 다음 명령을 실행하여 root 사용자의 새 암호를 설정합니다. root 암호가 이미 설정되어 있는 경우 이 단계를 건너뜁니다.

mysqladmin --user=root password "newpassword"

mysql 로그인

mysql -uroot -p

'root' 사용자 비밀번호 입력

MariaDB 콘솔에서 다음 쿼리 실행

MariaDB [(none)]> select host,user,password from mysql.user;

'user' 열 값이 ''(빈)인 레코드가 있을 수 있습니다. 다음 쿼리를 사용하여 해당 레코드를 삭제하십시오.

MariaDB [(none)]> delete from mysql.user where user='';
MariaDB [(none)]> flush privileges;
Query OK, 2 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
#$ mysql
ERROR 1045 (28000): Access denied for user ''@'localhost' (using password: NO)

위의 절차를 수행한 후 비밀번호 없이 mysql에 로그인할 수 없습니다.

이건 나한테 효과가 있었어.

설치 후

sudo mysql

로그인 할 수 있습니다.

그리고나서

alter user root@localhost identified via '';
flush privileges;
\q

이제 기본 동작과 마찬가지로 localhost에서 패스워드를 사용하지 않고 root으로 로그인할 수 있습니다.

mysql -uroot

언급URL : https://stackoverflow.com/questions/44298160/mysql-mariadb-10-0-29-set-root-password-but-still-can-login-without-asking-p