윈도우10 WSL 에 설치된 Ubuntu 20.04 에 MariaDB 설치하기

[ 설치환경 ]

  • Microsoft Windows 10 Pro(10.0.19041 N/A 빌드 19041)
  • WSL 2(Ubuntu 20.04 LTS)

 

설치순서

  1. wsl에 접속
  2. mariadb-server 목록 조회 : 설치할 mariadb-server 목록조회
  3. mariadb-server 설치:  DBMS 서버 설치 (필수)
  4. mysql_secure_installation: 보안 설정
  5. mariadb 접속 및 SQL 수행 

WSL 에 접속

윈도우 command 창이나 Window PowerShell 창에서 wsl 명령어를 수행하여 wsl에 접속한다. wsl에 접속한다는 것은 wsl 이 기동하는 Ubuntu Linux에 접속하는 것이다. 문서에서 "$" 표시는 wsl 접속된 상태를 의미한다.

PS D:\> wsl
username@computername:/mnt/d$

 

mariadb-server 설치:  DBMS 서버 설치 

아래 명령어로 mariaDB server(DBMS)를 설치한다. 위에서 확인한 mariadb-server-10.3 버전을 설치한다.

mariadb-client-10.3, mariadb-client-core-10.3, mariadb-common mariadb-server-core-10.3, socat 도 같이 설치되므로 별도로 client를 설치할 필요는 없다.

mariadb-server 설치후 sudo apt-get install mariadb-client-10.3 명령어를 수행하면 이미 설치되었다는 메시지가 출력된다.

$ sudo apt-get install mariadb-server

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libevent-core-2.1-7 libevent-pthreads-2.1-7 libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  galera-3 libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libmysqlclient21 libsnappy1v5 libterm-readkey-perl
  mariadb-client-10.3 mariadb-client-core-10.3 mariadb-common mariadb-server-core-10.3 socat
Suggested packages:
  libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl mailx mariadb-test tinyca
The following NEW packages will be installed:
  galera-3 libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libmysqlclient21 libsnappy1v5 libterm-readkey-perl
  mariadb-client-10.3 mariadb-client-core-10.3 mariadb-common mariadb-server-10.3 mariadb-server-core-10.3 socat
0 upgraded, 13 newly installed, 5 to remove and 0 not upgraded.
Need to get 20.6 MB of archives.
After this operation, 32.6 MB disk space will be freed.
Do you want to continue? [Y/n]

위의 명령어에 sudo 명령어를 붙인 이유는 root 권한으로 설치해야 한다. 그렇지 않으면 아래 오류가 발생한다.

$ apt-get install mariadb-server
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

 

설치가 완료된 후 MariaDB 서비스가 자동으로 시작되지 않으므로 다음 명령을 사용하여 MariaDB 서비스를 시작합니다.

$ sudo service mysql start
 * Starting MariaDB database server mysqld

 

mysql_secure_installation: 보안 설정

mysql_secure_installation 명령어로 root 패스워드 설정, anonymous user 삭제 여부,  root 원격접속허용 여부, 테스트 데이터베이스 삭제 여부, 테이블 권한 갱신 여부 등을 선택하는 작업을 수행한다.

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Set root password? [Y/n] Y
New password:
Enter current password for root (enter for none):

... ...
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]

최초 설치 시 루트 암호 빈값이므로 " Enter "를 누릅니다.

root에 대한 새로운 암호설정 여부에서 'Y'를 입력 후 암호를 설정합니다. 

 

 

 

mariadb 접속 및 SQL 수행

MariaDB가 정상 동작하는지 확인하기 위해서 wsl 터미널에서 mariadb를 실행하고 MariaDB console에서 명령어를 입력합니다.  MariaDB에서 SQL 명령어 끝에 세미콜론(;)을 입력하고 엔터를 치면 실행 결과를 출력합니다.

 

wsl 콘솔에서 아래 명령어를 수행하면 wsl 계정의 패승워드를 입력하라는 메시지가 뜨는데, wsl 생성 시 입력한 패스워드를 입력합니다. 패스워드를 입력하면 바로 mariadb에 접속됩니다. 패스워드를 묻지 않고 바로 접속될 수도 있습니다.

$ sudo mariadb
[sudo] password for username :

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 66
Server version: 10.3.32-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

Maria DB 에서 SQL 명령어를 실행한다. 

현재 생성되어 있는 database 목록을 출력한다 

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

 

설치된 Maria DB 버전을 확인한다.  10.3 version이  설치된 것을 확인 할 수 있다.

MariaDB [(none)]> select version();
+----------------------------------+
| version()                        |
+----------------------------------+
| 10.3.32-MariaDB-0ubuntu0.20.04.1 |
+----------------------------------+
1 row in set (0.000 sec)

 

계정 정보에 대해 조회해 봅니다. 위에서 계정과 패스워드없이 DB에 접속한 한 것은 root 인증 방식이 unix_socket 방식으로 설정되어 있어 패스워드 없이 접속된 것입니다.

MariaDB [mysql]> select host,user,plugin from user;
+-----------+------+-------------+
| host      | user | plugin      |
+-----------+------+-------------+
| localhost | root | unix_socket |
+-----------+------+-------------+
1 row in set (0.000 sec)

WSL 쉘에서 다음 접속 명령어를 수행하면 접속 오류가 발생합니다. 이는 인증 방식이 unix_sokcet 방식으로 지정되어 있기 때문입니다.

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

 

 

root로 mysql password 방식으로 변경하려면 다음을 수행합니다.

sudo mysql

MariaDB> update mysql.user set plugin = 'mysql_native_password' where User='root';
MariaDB> FLUSH PRIVILEGES;

MariaDB [(none)]> select host,user,plugin from mysql.user;
+-----------+------+-----------------------+
| host      | user | plugin                |
+-----------+------+-----------------------+
| localhost | root | mysql_native_password |
+-----------+------+-----------------------+
1 row in set (0.000 sec)

MariaDB> exit;

인증 방식이 기존 unix_sokcet 방식에서 mysql_native_password 방식으로 변경된 것을 확인할 수 있습니다.

이제 쉘에서 아래처럼 db 접속 명령어를 수행하면 DB 접속이 잘 됩니다.

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 59
Server version: 10.3.32-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

 

mariadb 관리툴로 접속

mysql, mariaDB 관리 툴로는 HeidiSQL, DBever, Toad for mysql, SQL Developer, MySQL Workbench 등 다양하게 존재합니다. 이중 HeidiSQL 로 mariaDB 접속을 설명합니다.

 

HeidiSQL 접속

WSL에서도 MySQL 8.0에 연결하도록 HeidiSQL을 구성할 수 있습니다.

https://www.heidisql.com/download.php 에서 HeidiSQL 을 다운로드 후 설치합니다.

설치 완료 후 heidisql 을 실행합니다.

 

  • 새로 만들기를 클릭하고 연결에 mariaDB-WSL2을 입력합니다. 이름은 임의로 각자 정할수 있습니다.
  • Library :  libmysql.dll, mariadb인 경우에는(libmariadb.dll 을 선택), 둘 다 접속은 가능
  • Hostname / IP: localhost
  • User: root
  • Password: root 패스워드 입력

 

만일, 아래와 같은 오류 메시지가 나면

'Access denied for user 'root'@'localhost' (using password: YES)'

mysql 또는 mariadb 접속 후 아래 명령어를 수행해 줍니다.

sudo mysql

MariaDB> update mysql.user set plugin = 'mysql_native_password' where User='root';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit;

 

MariaDB 중지

아래 명령어로 mariaDB를 중지합니다.

$ sudo service mysql stop
 * Stopping MariaDB database server mysqld

 

+ Recent posts