Debian 9.1에서 MariaDB 10.1.23-MariaDB-9+deb9u1을 실행합니다. MariaDB가 설치된 새로운 운영 체제 설치apt-get install mariadb-server mariadb-client
분명히 MariaDB는 설치 시 루트 비밀번호를 묻지 않으므로 나중에 설정하겠습니다.
# mysql -uroot
> select user from mysql.user;
+------+
| user |
+------+
| root |
+------+
좋습니다. 루트가 이미 존재합니다. 이제 비밀번호를 변경하세요.
> set password for 'root'@'localhost' = PASSWORD('P@ssw0rd');
> flush privileges;
> exit
효과적인가요?
# mysql -uroot -pblabla
MariaDB [(none)]>
비밀번호를 설정하는 것은 괜찮지만 MariaDB가 빈 비밀번호라도 임의의 비밀번호를 허용하는 이유는 무엇입니까?
이 설치에서는 ALTER USER 문을 허용하지 않습니다.
답변1
답변:https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/:
분명히 16.04(또는 5.7 설치?)에 mysql-server를 설치하면 비밀번호가 아닌 auth_socket 플러그인을 통해 루트 액세스가 허용됩니다. sudo mysql -u root (nb w/oa 비밀번호)를 실행하면 mysql 콘솔이 표시되고, 루트가 아닌 사용자로 명령을 실행하면 비밀번호를 묻는 메시지가 표시됩니다.
인증 백엔드에서는 비밀번호를 확인하지도 않기 때문에 비밀번호를 변경해도 큰 차이가 없는 것 같습니다.
이 auth_socket 플러그인을 비활성화하려면 mysql 프롬프트에서 다음을 수행하십시오.
update mysql.user set plugin=null where user='root';
flush privileges;
이로 인해 MariaDB에는 [Linux] 루트 비밀번호도 필요합니다.
심도 있는 토론과 답변을 해주신 jesse-b와 derobert에게 감사드립니다.
답변2
또한 my.cnf에 "skip-grant-tables"가 있는지 확인하고, 그렇다면 삭제하세요.