2019년 9월 기준 MariaDB의 최신 버전에서 mysql-root 계정의 패스워드 사용에 대한 이슈(변경점)가 있음
MariaDB 버전 : 10.4
공식안내 : https://mariadb.com/kb/en/library/authentication-from-mariadb-104/
내용중 신경써야 하는 부분
- 시스템root 계정에서는 더이상 패스워드를 요구하지 않음
- user 테이블은 더이상 실제테이블로 존재하지 않음 (없는것은 아니고)
- mysql.global_priv 테이블의 내용을 기반으로 내용만 보여줌
편리해 진 것
- 기존 : mysql -uroot -p 명령어와 패스워드 입력후 mysql콘솔 로그인
- 변경 : 리눅스 root 계정 상태에서는 패스워드 없이 mysql 명령어 만으로 mysql-root 획득 가능
(물론, root 가 아닌 일반 계정 상태에서는 패스워드를 요구한다)
문제가 되나?
ㅇㅇ 문제가 될 수 있다.
특히나 보안같은걸 강조하는 회사(및 환경)에서는 한번이라도 더 인증 과정을 거치길 바라는데
저런 상태가 되어버리면 작업자는 물론 편하지만
바라보는 이는 실눈부터 뜨는 상태가 된다.
그리고 당장 작업자인 나조차도 저런건 싫어…
명시적으로 절차가 있어야 “내가 뭔 계정으로 뭔 일을 해야지” 하는게 생기는거지…
참, 패스워드를 변경하는 방법중 user 테이블을 직접 건드리는 명령을 내리면
mysql> update user set password=password('hahahoho') where user='root'; ERROR 1348 (HY000): Column 'Password' is not updatable ERROR 1348 (HY000): Column 'authentication_string' is not updatable
요런식으로 에러가 발생한다.
그럼 다 필요 없고 예전 환경처럼 하고 싶다면?
1. DB재생성
(혹시나 하는 얘기지만 운영중인 시스템에서 이렇게 하라는 의미가 아님.. 10.4를 새로 설치 했다면을 가정한다.)
systemctl stop mariadb rm -fr /var/lib/mysql mysql_install_db --auth-root-authentication-method=normal
2. mysql root 패스워드 변경
MariaDB> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; or MariaDB> set password = password("password");
3. 그다음 테스트를 해보자
root 계정 상태에서 “mysql”이라는 명령어 만으로 로그인이 되는지
그리고 일반 계정 상태에서 정상적인 로그인이 되는지…