본문 바로가기

Dev/etc

Linux 환경에서의 MySql5.1~ 설치와 root 계정 접속 세팅

 

 

본 포스팅은 Linux(Ubuntu) 환경에서 mysql 설치와, mysql root 계정 접속 세팅 방법을 설명합니다.

 

mysql 5.1 버전 이 후부터는 플러그인 개념이 도입되면서 리눅스에서는 초기 상태만으론 sudo권한 없이는 mysql의 root 계정 접속이 불가능 하므로,  일반 권한으로 root로 접속 가능하도록 세팅 해 주는 내용을 포함합니다.

MySQL 설치

$ sudo apt-get update
$ sudo apt-get install mysql-server

mysql-server 설치 후 mysql을 root 계정으로 접속 해 보면 아마도 아래와 같은 오류를 출력 할 겁니다.

$mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

이는 root 계정으로 접속 할 수 없다는 의미로, 서두에서 설명 하듯, mysql5.1 버전 이후 도입된 플러그인으로 인해 리눅스의 sudo 권한이 아니면 mysql의 root 계정에 접속할 수 없습니다.

이제, 일반 권한으로도 root 계정에 접속 할 수 있도록 설정을 바꿔줍니다.

 

먼저 sudo 권한으로 mysql에 접속합니다.

 

$ sudo mysql -u root

 

터미널의 명령어 라인이 mysql> 로 바뀌면서 mysql에 접속 됩니다.

이제 mysql 쿼리문을 통해 데이터베이스를 조작 할 수 있는 상태가 되었습니다.

 

아래의 명령어를 순차적으로 실행해서 user 테이블을 조회 합니다.

mysql> use mysql;
mysql> select user, plugin from user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.session    | mysql_native_password |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

 

테이블의 user 중 root의 plugin이 auth_socket으로 되어 있는 부분을 mysql_native_password로 바꿔 준 후, 다시 테이블을 조회 해봅니다.

 

mysql> update user set plugin='mysql_native_password' where user='root';
mysql> flush privileges;
mysql> select user, plugin from user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | mysql_native_password |
| mysql.session    | mysql_native_password |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

 

root 계정의 plugin이 바뀐것을 확인 했으면, exit를 입력해 mysql을 빠져나옵니다.

이제 sudo 권한 없이 mysql 접속이 가능해 졌습니다.

 

사실 sudo mysql -u root -p로 한 번만 접속해서 사용자용 계정을 만들어 그것을 이용하는것이 가장 바람직합니다.

 

왜냐하면 root 계정은 매우 큰 권한을 갖고 있기 때문에 보안상 문제가 될 소지가 다분하기 때문입니다.

 

이것으로 포스팅을 마치겠습니다.