EC2 MariaDB 삭제 후 재설치

이기현·2021년 11월 10일
0

MariaDB

목록 보기
3/29

삭제 과정

1. yum을 통해 MariaDB를 설치했기 때문에 다시 yum remove로 설치 패키지를 삭제한다.

목록 확인후 삭제
일단은 maria-server만 삭제해보기

[ec2-user@ip-172-31-6-25 mysql]$ yum list installed mariadb\*
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
1 packages excluded due to repository priority protections
Installed Packages
MariaDB-backup.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
MariaDB-client.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
MariaDB-common.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
MariaDB-compat.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
MariaDB-server.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
[ec2-user@ip-172-31-6-25 mysql]$ yum remove MariaDB-server.x86_64

다시 maria-server 설치

yum install mariadb mariadb-server

다시 설치했지만 systemctl start mariadb가 되지 않았다.

오류는 전과 동일했는데.이는 mariadb-server를 새로 설치해도 기본 schema와db들이 설치되지 않았기 때문이다. ( 기존에 mysql 디렉토리가 있어서 생성을 안했나?)

Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal mariadbd[5044]: 2021-11-10  5:54:00 0 [ERROR] Could not open mysql.plugin table: "Table 'mysql.plugin' doesn't exist". Some plugins may be not loaded
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal mariadbd[5044]: 2021-11-10  5:54:00 0 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal mariadbd[5044]: 2021-11-10  5:54:00 0 [Note] Server socket created on IP: '::'.
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal mariadbd[5044]: 2021-11-10  5:54:00 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal mariadbd[5044]: 2021-11-10  5:54:00 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.db' doesn't exist
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal mariadbd[5044]: 2021-11-10  5:54:00 0 [ERROR] Aborting
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal systemd[1]: Failed to start MariaDB 10.5.13 database server.
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal systemd[1]: Unit mariadb.service entered failed state.
Nov 10 05:54:00 ip-172-31-6-25.ap-northeast-2.compute.internal systemd[1]: mariadb.service failed.

그래서 일단은 모든 mariadb설치 패키지를 삭제하고 새로 설치하기로 했다.

[ec2-user@ip-172-31-6-25 lib]$ yum list installed mariadb\*
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
1 packages excluded due to repository priority protections
Installed Packages
MariaDB-backup.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
MariaDB-client.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
MariaDB-common.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
MariaDB-compat.x86_64                                                                                         10.5.12-1.el7.centos                                                                                          @mariadb
[ec2-user@ip-172-31-6-25 lib]$ yum remove MariaDB*

MariaDB는 10.5를 설치할 예정이기 때문에
버전정보를 명시한다.

sudo vim /etc/yum/repos.d/MaraiDB.repo

# MariaDB 10.5 CentOS repository list - created 2021-03-16 03:20 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

mariaDB설치

sudo yum install -y MariaDB-server MariaDB-client MariaDB-backup

이렇게 설치하고 나니
/var/lib/mysql 디렉토리안에 정상적으로 시스템db가 생성되었다.

[ec2-user@ip-172-31-6-25 mysql]$ ll
total 110628
-rw-rw---- 1 mysql mysql     24576 Nov 10 06:48 aria_log.00000001
-rw-rw---- 1 mysql mysql        52 Nov 10 06:48 aria_log_control
-rw-rw---- 1 mysql mysql       972 Nov 10 06:48 ib_buffer_pool
-rw-rw---- 1 mysql mysql  12582912 Nov 10 06:48 ibdata1
-rw-rw---- 1 mysql mysql 100663296 Nov 10 06:48 ib_logfile0
drwx------ 2 mysql mysql      4096 Nov 10 06:48 mysql
drwx------ 2 mysql mysql        20 Nov 10 06:48 performance_schema
drwx------ 2 mysql mysql        20 Nov 10 06:48 test

linux기동시 mariadb 자동 기동 설정

sudo systemctl enable mariadb

charset 설정

sudo vim /etc/my.cnf

[mysqld]
default_storage_engine=innodb
init-connect='SET NAMES utf8mb4'
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
port=3306
default-character-set = utf8mb4

[mysqldump]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

서버 재시작

설정확인

show variables like 'c%';
  • mariadb root 계정 접속오류
mysql -u root -p

로 접속하려는데 , 권한 문제로 접속이 안되었다.

sudo mysql -u root -p 로 접속하니 문제없이 접속되었다.

  • mariadb의 실행파일의 경로를 확인하는 방법
whereis mariadb
whereis mysql

혹은 

ps aux | grep mysql
  • mariadb이 데이터파일 위치를 확인하는 방법은 db접속후
show
 variables like 'datadir'

mariadb의 실행파일의 경로를 확인해보니

/usr/bin/mysql

근데 ps aux | grep mysql로 확인해보면

mysql     5603  0.0  8.1 1163908 82196 ?       Ssl  06:52   0:00 /usr/sbin/mariadbd

둘의 경로가 다르다.

차이가 뭘까

mariadb에 접속할 때

mysql -u root -p
에서 mysql은 어느 디렉토리안에 bin 파일일까 ?
env를 통해 환경변수를 확인해보면

PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

따라서 /usr/bin의 mysql을 실행하면 /usr/sbin/mariadbd가 실행되는 것 같다.

기존에 /usr/bin 의 권한이 root로 되어있기 때문에 ec2-user로 접속했을때 오류가 나는게 아닐까?

해당 실행파일 owner를 ec2-user로 변경해보았다.

실행파일의 권한을 변경하는 것은 의미가 없었다.

mysql의 root 계정으로의 접속은 root system계정으로 접속이 가능했고,

ec2-user 계정은

mysql -u ec2-user -p 

로 접속이 가능했다.

또한 접속후 dbalkh 계정 생성후

grant all privileges on *.* to dbalkh 

실행 후 ec2-user로 dbalkh계정으로 접속하면 접속이 되었다.

[ec2-user@ip-172-31-6-25 sbin]$ mysql -u dbalkh -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 22
Server version: 10.5.13-MariaDB MariaDB Server

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)]>

아직 왜 mysql root계정은 시스템 root계정으로밖에 접속이 안되는지 모르겠다.

구글링 해보니, Mysql에서 root계정으로 접속할 때 초기에는 Linux local 인증을 사용하기 때문에, root계정은 시스템 root 인증으로만 접속이 가능하다.

따라서 일반 시스템사용자도 mysql root계정으로 접속하기 위해서는 mysql root계정의 인증방식을 변경해주어야 한다.

https://www.lesstif.com/dbms/mysql-error-1698-28000-89555999.html
https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

profile
실력을 쌓아가는 하루하루

0개의 댓글