사용자 계정 만들기

이번에는 MySQL의 계정을 생성하도록 하겠습니다. root가 아닌 자기만의 계정 만들기 입니다.

MySQL에 접속해 주세요. 그리고 다음의 명령문을 입력해 주세요 의미는 MySQL에 있는 생성된 모든 데이터베이스를 보는 명령문 입니다.

show databases;
mysql image

보이는 데이터베이스 목록 중 mysql 데이터베이스를 사용합니다 mysql 데이터베이스를 사용하려면 use라는 명령문을 사용합니다.

use 데이터베이스 이름

mysql 데이터베이스를 사용할 것 이기 때문에. 다음과 같이 입력해 주세요.

use mysql;

이제 선택한 mysql데이터베이스에 있는 테이블의 목록을 보겠습니다. 테이블의 목록을 보는 명령어는 show tables입니다.

show tables;
mysql image

출력된 테이블의 목록을 보면 user라는 테이블이 보입니다.

저 테이블이 새로운 계정을 만드는데 사용됩니다. 즉, 유저정보가 담긴 테이블입니다.

사용자 계정을 만들려면 반드시 root계정으로 mysql에 접속을 하셔야 합니다.!!

또한 데이터 베이스는 mysql 데이터베이스가 선택되어있어야 합니다.

만들어볼 계정은 david 비밀번호는 1234 입니다.
user테이블의 구조를 한번 보도록 하겠습니다. 구조를 보는 명령어는 desc 입니다.

desc 테이블명

그럼 user 테이블의 구조를 보는 명령어는 다음과 같겠죠?

desc user

mysql>desc user; 로 user 테이블의 구조를 확인해본다. desc 명령어로 테이블의 구조를 파악할수 있습니다.

그럼 총 45개의 필드가 존재 합니다. 계정 하나를 만들기 위해서 저 45개를 다 설정해 주어야 합니다.

mysql image

그럼 user테이블에 계정이 무엇이 있는지확인 해 보죠.

확인해 보기 위해서 user필드에 있는 레코드를 확인해 본다.

레코드를 확인하려면 select 명령어를 쓴다. 그리고 필드의 확인할 필드를 적어준다. 그럼 우리는

host,user,authentication_string 3개를 확인해보자 그럼 host ,user, authentication_string의 레코드를 볼 수 있다.

명령어

SELECT Host, User, authentication_string FROM user;
mysql image

다른 사람도 위와같은 방법으로 타인의 패스워드를 열람 가능 하기 때문에 비밀번호는 암호화 처리되어있다.

그럼 이제 계정을 만들어보자

만들어볼 계정은 david 비밀번호는 1234 이다.

user 테이블에 있는 39개의 필드를 모두 입력해야 한다.

먼저 mysql 데이터베이스를 선택해준다.

use mysql;

그후에 계정 정보 입력

insert into 테이블명 values

INSERT INTO `user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, `password_last_changed`, `password_lifetime`, `account_locked`) VALUES
('localhost', 'david', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', password('1234'), 'N', NOW(), 100, 'N');

이로써 끝이다. 위의 작업은 사용자 접근권한을 부여한것이다.

mysql image

그 후에 변경된 user 테이블을 mysql 데이터베이스 시스템에 적용시키기 위하여 아래의 명령어를 입력한다.

flush privileges;
mysql image

그리고 user 테이블의 Host, User ,authentication_string FROM user 를 사용해서 david계정이 등록되었는지 확인하겠습니다. (모든 필드를보면 너무 많으니까 host 필드, user필드, authentication_string필드만 확인)

SELECT Host, User, authentication_string FROM user;
mysql image

위에 보이듯 등록이 되었다.!!

그럼 자신이 만든 계정으로 접속해 보자

exit 를 입력해서 DB에서 빠져나와서

exit
mysql image

다시 접속을 해보자

sudo ./mysql -udavid -p1234
mysql image

그럼 이번엔 계정을 삭제해 보자

먼저 삭제를 해보기 위해서 삭제할 계정을 새로 만들자.

mysql DB를 선택한다.

use mysql;

이번엔 honda라는 계정을 만든다.

INSERT INTO `user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, `password_last_changed`, `password_lifetime`, `account_locked`) VALUES
('localhost', 'honda', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', password('1234'), 'N', NOW(), 100, 'N');

위와 같이 입력한후

SELECT host, user, authentication_string FROM user;

위 명령어를 입력합니다.

mysql image

위의 화면처럼 honda가 보인다.

그럼 이제 이 honda 계정을 삭제하자

(선택하지 않았다면)먼저 mysql 데이터 베이스를 선택한다.

use mysql;

이제 honda 계정을 삭제하겠습니다.
아래의 명령문을 입력해주세요.

DELETE FROM user WHERE user = 'honda';
flush privileges;

그리고 다시 유저 목록을 보면

SELECT host, user, authentication_string FROM user;
mysql image

위와같이 honda 계정은 삭제되었습니다.

이번엔 계정 패스워드를 변경해보자.

exit 로 mysql을 나간후 다시 루트 계정으로 접속한다. 루트 계정이 아니면 변경이 불가합니다.

sudo ./mysql -uroot -proot
use mysql;
UPDATE user SET authentication_string=password('123456') WHERE user='root';

그리고 적용시키기 위하여

flush privileges;

를 입력합니다..

mysql image

저위에 명령문에 root라고 작성했지만 자신이 변경하고 싶은 계정명을 적으면 된다.

그리고exit로 나가서 다시 로그인을 테스트 해보면 된다.

mysql image

잘 됩니다. ^^