mysql 계정 생성하기

항상 세팅 부분은 어쩌다 한번씩 하다 보니 자꾸 까먹게 되어서 10년 넘게 따로 문서에 기록해뒀었는데 이젠 문서 찾기도 귀찮아서 블로그에 남김니다.mysql 계정 생성 하기

1. 사용할 DB를 생성합니다.

   CREATE DATABASE 디비명;

“testdb” 라는 이름의 데이터베이스를 생성 합니다.

mysql> CREATE DATABASE testdb;

2. 사용할 계정을 생성합니다.

mysql> GRANT ALL PRIVILEGES ON [DB명].[테이블명(*)] TO [유저명]@[서버명] IDENTIFIED BY '[암호]' WITH GRANT OPTION;

데이터베이스명 : testdb
계정 이름: userid
게정 비밀번호: userpwd

접속을 localhost 에서만 허용하고 싶으면 다음 처럼 입력 합니다.

mysql> GRANT ALL PRIVILEGES ON testdb.* TO `userid`@`localhost` IDENTIFIED BY 'userpwd' WITH GRANT OPTION;

접속을 localhost 외 모두 허용하려면 “유저명@`%`” 를 추가 해야 합니다.

mysql> GRANT ALL PRIVILEGES ON testdb.* TO `userid`@`%` IDENTIFIED BY 'userpwd' WITH GRANT OPTION;

간혹 리눅스 서버에서 /etc/hostname 에 도메인명 (예: “mydomain.com”)이 지정되어 있는 경우 localhost 에서 접속이 안됩니다.
이때는 접속해야할 서버에 hostname 을 지정하여 “유저명@`mydomain.com`” 를 추가 해야 합니다.

mysql> GRANT ALL PRIVILEGES ON testdb.* TO `userid`@`mydomain.com` IDENTIFIED BY 'userpwd' WITH GRANT OPTION;

3. 계정 설정까지 다 되었으면 새로운 계정을 사용할 수 있도록 합니다.

mysql> FLUSH PRIVILEGES;

4. 예전 방식의 암호화를 사용할 경우 암호를 예전 방식으로 저장합니다.

mysql> use mysql;
                                 
mysql> update user set password=password('비밀번호') where user='userid';

mysql> FLUSH PRIVILEGES;

5. mysql 5.5 이상일때 위에 것이 안될 수 있습니다. 그때는 다음과 같이 사용합니다.
접속을 localhost 에서만 허용하고 싶으면 다음 처럼 입력 합니다.

insert into user (host, user, password, ssl_cipher, x509_issuer, x509_subject, authentication_string) values ('localhost', '아이디', password('비밀번호'), '',  '', '', '');

insert into db (host, db, user, select_priv, insert_priv, update_priv, delete_priv, create_priv, drop_priv, grant_priv, references_priv, index_priv, alter_priv) values ('localhost','디비명','아이디', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y' );

접속을 localhost 외 모두 허용하려면 “유저명@%” 를 추가 해야 합니다.

insert into user (host, user, password, ssl_cipher, x509_issuer, x509_subject, authentication_string) values ('%', '아이디', password('비밀번호'), '',  '', '', '');

insert into db (host, db, user, select_priv, insert_priv, update_priv, delete_priv, create_priv, drop_priv, grant_priv, references_priv, index_priv, alter_priv) values ('%','디비명','아이디', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y' );
#MYSQL #mysql 계정생성