MySQL 사용자 관리 및 권한 설정

사용자 생성

CREATE USER 명령어로 사용자 추가

CREATE USER 'guest'@'%' IDENTIFIED BY 'securepass123';

비밀번호가 필요하지 않은 경우 IDENTIFIED BY 절을 생략할 수 있습니다.

mysql.user 테이블 직접 삽입 (주의: 필드 값 필수)

INSERT INTO mysql.user (
    Host, User, authentication_string, 
    ssl_cipher, x509_issuer, x509_subject
) VALUES (
    '%', 'guest', PASSWORD('securepass123'),
    '', '', ''
);

변경 사항 적용을 위해 권한 테이블을 새로 고쳐야 합니다:

FLUSH PRIVILEGES;

GRANT 문을 통한 사용자 생성 및 간단한 권한 부여

GRANT SELECT ON example_db.* TO 'app_user'@'localhost' 
IDENTIFIED BY 'app_pass456' WITH GRANT OPTION;

사용자 및 권한 확인

-- 전체 사용자 정보 조회
SELECT User, Host, authentication_string FROM mysql.user;

-- 특정 사용자의 권한 확인
SHOW GRANTS FOR 'app_user'@'localhost';

사용자 삭제

DROP USER 'guest'@'%';

권한 부여

GRANT SELECT, INSERT, UPDATE, DELETE 
ON project_db.* TO 'developer'@'%' 
IDENTIFIED BY 'devpass789' 
WITH GRANT OPTION;

권한 회수

REVOKE INSERT ON project_db.* FROM 'developer'@'%';

비밀번호 변경

-- 특정 사용자 비밀번호 변경 (재로그인 필요)
SET PASSWORD FOR 'admin'@'localhost' = PASSWORD('new_secure_pwd');

-- 현재 사용자 비밀번호 변경
SET PASSWORD = PASSWORD('current_pwd');

명령행에서 비밀번호 변경 (mysqladmin)

mysqladmin -u admin -h localhost -p oldpass password newpass
mysqladmin -u root -p current_password password new_password

MariaDB 10.3 이상에서 root 무비밀번호 로그인 문제 해결

ALTER USER root@localhost 
IDENTIFIED VIA mysql_native_password 
USING PASSWORD('your_secure_password');

Ubuntu 18.04에서 root 비밀번호 없음 문제 해결

ALTER USER 'root'@'localhost' 
IDENTIFIED WITH mysql_native_password BY 'my_root_password';

FLUSH PRIVILEGES;

문제 발생 시 대응 방법

Access denied for user 'root'@'192.168.100.1'

원인: 기본 설치 시 루트 계정이 비밀번호 없이 접근 가능함.

해결 방법:

SELECT User, Host, authentication_string, plugin FROM mysql.user;

UPDATE mysql.user 
SET plugin = 'mysql_native_password' 
WHERE User = 'root';

FLUSH PRIVILEGES;

태그: MySQL MariaDB user management privilege control authentication

6월 20일 18:10에 게시됨