[MariaDB 10.4] 설치, 비밀번호 변경, 포트변경, 원격접속
대략 3개월 이상 방치하고 있는 서버가 한 대 있다. 몇 가지 테스트 해 볼 것들이 생겨서 bind와 httpd, php, mariadb를 다시 설치하고 테스트 하려고 한다. 먼저 mariadb는 아래와 같이 yum으로 설치했다.
[root@localhost /]# yum install mariadb-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
* epel: ftp.iij.ad.jp
* extras: mirror.kakao.com
* remi-php72: ftp.riken.jp
* remi-safe: ftp.riken.jp
* updates: mirror.kakao.com
Package mariadb-server is obsoleted by MariaDB-server, trying to install MariaDB-server-10.4.13-1.el7.centos.x86_64 instead
Resolving Dependencies
--> Running transaction check
---> Package MariaDB-server.x86_64 0:10.4.13-1.el7.centos will be installed
--> Processing Dependency: MariaDB-client for package: MariaDB-server-10.4.13-1.el7.centos.x86_64
--> Processing Dependency: MariaDB-common for package: MariaDB-server-10.4.13-1.el7.centos.x86_64
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.4.13-1.el7.centos will be installed
---> Package MariaDB-common.x86_64 0:10.4.13-1.el7.centos will be installed
--> Processing Dependency: MariaDB-compat for package: MariaDB-common-10.4.13-1.el7.centos.x86_64
--> Running transaction check
---> Package MariaDB-compat.x86_64 0:10.4.13-1.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================
Installing:
MariaDB-server x86_64 10.4.13-1.el7.centos mariadb 26 M
Installing for dependencies:
MariaDB-client x86_64 10.4.13-1.el7.centos mariadb 12 M
MariaDB-common x86_64 10.4.13-1.el7.centos mariadb 81 k
MariaDB-compat x86_64 10.4.13-1.el7.centos mariadb 2.2 M
Transaction Summary
=======================================================================================================================================
Install 1 Package (+3 Dependent packages)
Total download size: 40 M
Installed size: 198 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm | 81 kB 00:00:00
(2/4): MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm | 2.2 MB 00:00:01
(3/4): MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm | 12 MB 00:00:03
(4/4): MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm | 26 MB 00:00:04
---------------------------------------------------------------------------------------------------------------------------------------
Total 5.3 MB/s | 40 MB 00:00:07
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : MariaDB-compat-10.4.13-1.el7.centos.x86_64 1/4
Installing : MariaDB-common-10.4.13-1.el7.centos.x86_64 2/4
Installing : MariaDB-client-10.4.13-1.el7.centos.x86_64 3/4
Installing : MariaDB-server-10.4.13-1.el7.centos.x86_64 4/4
Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
Please report any problems at http://mariadb.org/jira
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
Verifying : MariaDB-server-10.4.13-1.el7.centos.x86_64 1/4
Verifying : MariaDB-common-10.4.13-1.el7.centos.x86_64 2/4
Verifying : MariaDB-compat-10.4.13-1.el7.centos.x86_64 3/4
Verifying : MariaDB-client-10.4.13-1.el7.centos.x86_64 4/4
Installed:
MariaDB-server.x86_64 0:10.4.13-1.el7.centos
Dependency Installed:
MariaDB-client.x86_64 0:10.4.13-1.el7.centos MariaDB-common.x86_64 0:10.4.13-1.el7.centos
MariaDB-compat.x86_64 0:10.4.13-1.el7.centos
Complete!
설치하고 보니 MariaDB 10.4가 설치되었다. 언제 yum 저장소를 수정했는지 기억이 없다. 살펴보니 올 2월 말이다. 그리 오래된 것도 아닌데......기억이 -_-;
[root@localhost yum.repos.d]# ll
total 116
-rw-r--r-- 1 root root 1664 Nov 23 2018 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r-- 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 Nov 23 2018 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23 2018 CentOS-Sources.repo
-rw-r--r-- 1 root root 5701 Nov 23 2018 CentOS-Vault.repo
-rw-r--r-- 1 root root 1050 Sep 18 2019 epel.repo
-rw-r--r-- 1 root root 1149 Sep 18 2019 epel-testing.repo
-rw-r--r-- 1 root root 261 Feb 28 23:48 MariaDB.repo
-rw-r--r-- 1 root root 446 Feb 18 01:07 remi-glpi91.repo
-rw-r--r-- 1 root root 446 Feb 18 01:07 remi-glpi92.repo
-rw-r--r-- 1 root root 446 Feb 18 01:07 remi-glpi93.repo
-rw-r--r-- 1 root root 446 Feb 18 01:07 remi-glpi94.repo
-rw-r--r-- 1 root root 855 Feb 18 01:07 remi-modular.repo
-rw-r--r-- 1 root root 456 Feb 18 01:07 remi-php54.repo
-rw-r--r-- 1 root root 1314 Feb 18 01:07 remi-php70.repo
-rw-r--r-- 1 root root 1314 Feb 18 01:07 remi-php71.repo
-rw-r--r-- 1 root root 1314 Feb 28 23:31 remi-php72.repo
-rw-r--r-- 1 root root 1314 Feb 18 01:07 remi-php73.repo
-rw-r--r-- 1 root root 1314 Feb 18 01:07 remi-php74.repo
-rw-r--r-- 1 root root 2605 Feb 18 01:07 remi.repo
-rw-r--r-- 1 root root 750 Feb 18 01:07 remi-safe.repo
-rw-r--r-- 1 root root 20480 Feb 28 22:01 reoplist.gz
[root@localhost yum.repos.d]# cat MariaDB.repo
# MariaDB 10.4 CentOS repository list - created 2020-02-28 14:45 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
[root@localhost yum.repos.d]#
문제는 설치한 이후부터 시작됐다. 아래와 같이 mariadb의 root 계정 비밀번호를 아무리 변경해도 그냥 로그인 되는 것이다. 심지어 비밀번호를 변경하고 -p옵션에서 실행했을 때에 비밀번호 없이 그냥 엔터만 쳐도 로그인이 되는 것이다.
mariadb의 root 비밀번호를 바꾸는 것이 아무런 의미가 없다. 설치가 잘못되었거나 심각한 오류가 발생 한 줄 알았는데 google에서 mariadb 10.4 root password라고 검색하니 첫 번째 줄에 mariadb.com의 문서 Authentication from MariaDB 10.4 가 보인다.
대략적인 내용은 MariaDB 10.4(부터)는 unix_socket 인증 플러그인의 기본설정에 의해서 비밀번호 입력없이 mysql에 로그인이 가능하며, 기존의 인증방법도 가능하다는 설명인데 일단 authentication_string을 바꿔보기로 했다.
[root@localhost ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 26
Server version: 10.4.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)]> select host,user,plugin,authentication_string from mysql.user;
+-----------+-------------+-----------------------+-------------------------------------------+
| Host | User | plugin | authentication_string |
+-----------+-------------+-----------------------+-------------------------------------------+
| localhost | mariadb.sys | mysql_native_password | |
| localhost | root | mysql_native_password | *0B0A8BA0BB47561FA5C1FE726FFDFFC56F3FF585 |
| localhost | mysql | mysql_native_password | invalid |
+-----------+-------------+-----------------------+-------------------------------------------+
3 rows in set (0.001 sec)
MariaDB [(none)]> grant all privileges on *.* to 'root'@'localhost' identified by '1234567890123';
Query OK, 0 rows affected (0.013 sec)
MariaDB [(none)]>
MariaDB [(none)]> exit
Bye
[root@localhost ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]#
[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 66
Server version: 10.4.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)]>
위와 같이 root의 authentications_string을 바꾼 후에야 정상(?)으로 되돌아 온듯 하다. 이제는 -u/-p 옵션을 통해서 계정과 비밀번호를 입력하지 않으면 mariadb가 실행되지 않는다. 또한 set password 명령어로 변경한 비밀번호도 유효하다. (MariaDB 계정의 비밀번호는 바꾸는 방법은 몇가지 있겠지만 MariaDB 10.4에 대한 설명에서는 SET PASSWORD만 나와있길래 다른 방법은 테스트 해 보지 않았다.)
아쉬운 것은 root 계정의 authentication_string을 바꾸기 전에는 서버의 모든 계정들이 비밀번호 없이 mysql에 로그인 되었었는데 한 순간에 막혀버렸다. 모든 설정을 초기화 하고 다시 테스트 해 보던가 아니면 mariadb를 삭제 후 다시 설치한 후에 테스트 해 봐야겠다.
이제 원격접속을 테스트해보자. 현재 mariadb의 모든 계정들은 host가 localhost로 되어 있기때문에 당연히 localhost에서만 접속이 가능하다. host를 '%'로 하는 root 계정을 하나더 만들어보자. 아래와 같다.
MariaDB [(none)]>
MariaDB [(none)]> select host,user,plugin,authentication_string from mysql.user;
+-----------+-------------+-----------------------+-------------------------------------------+
| Host | User | plugin | authentication_string |
+-----------+-------------+-----------------------+-------------------------------------------+
| localhost | mariadb.sys | mysql_native_password | |
| localhost | root | mysql_native_password | *BF2569E47E04D4407F436C7EB87681FB9193988A |
| localhost | mysql | mysql_native_password | invalid |
+-----------+-------------+-----------------------+-------------------------------------------+
3 rows in set (0.001 sec)
MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by 'newpassword';
Query OK, 0 rows affected (0.011 sec)
MariaDB [(none)]> select host,user,plugin,authentication_string from mysql.user;
+-----------+-------------+-----------------------+-------------------------------------------+
| Host | User | plugin | authentication_string |
+-----------+-------------+-----------------------+-------------------------------------------+
| localhost | mariadb.sys | mysql_native_password | |
| localhost | root | mysql_native_password | *BF2569E47E04D4407F436C7EB87681FB9193988A |
| localhost | mysql | mysql_native_password | invalid |
| % | root | mysql_native_password | *BF2569E47E04D4407F436C7EB87681FB9193988A |
+-----------+-------------+-----------------------+-------------------------------------------+
4 rows in set (0.001 sec)
특정 ip주소에서만의 원격접속을 허용한다면 %을 ip주소로 대체할 수 있다. 원격접속을 허용하려면 가장먼저 방화벽 설정을 살펴봐야 한다. mariadb(mysql)의 기본포트는 3306이지만 60000으로 바꿔보려고 한다. 설치된 db의 종류와 버전에 따라서 설정 파일이 조금 다를 수 있겠지만 cnf파일에서 port=3306을 찾아서 원하는 포트로 바꿔주면 된다. 지금 설치한 MariaDB 10.4에서는 생략되어 있는지 찾을 수가 없었기에 설정파일(/etc/my.cnf.d/server.cnf)에 포트 부분만 추가해 주었다. server.cnf 파일 하단의 [mariadb-10.4] 다음줄에 port=60000을 추가하자. mariadb는 당연히 재시작 해야 한다.
이제 방화벽 설정에서 해당 포트를 열어줘야 한다.
# firewall-cmd --permanent --zone=public --add-port=60000/tcp
success
# firewall-cmd --reload
success
#
외부에서 접속하는 것은 로컬에서 실행하는 것과 비슷하다. 접속할 곳(host)의 도메인이나 ip주소와 포트번호를 추가로 지정하면 된다.
# mysql -u계정이름 -p -h호스트(ip주소 or URL) -P포트번호
아래는 MariaDB 원격접속 화면을 캡춰한 것이다.
ip주소는 가렸지만 변경한 포트 60000으로 접속된 것을 확인할 수 있다. 지금까지 DB 원격접속의 필요성을 느낀적은 없었지만 혹시나 하는 마음에 정리해봤다. 서버에서 db로의 원격접속이 불필요하다면 굳이 허용할 필요는 없을 것이다.
워드프레스(가 아니더라도)를 위한 리눅스 서버구축에 대해서 차근차근 정리하다보니 MariaDB의 설치와 설정에 대한 글을 중복이지만 다시 작성하였다. MariaDB를 최초에 원하는 버전으로 설치하는 방법을 조금 자세히 정리했다. 아래의 링크를 참조하자.
2021.04.20 - [Linux/서버구축 1.2.3...] - (10) 워드프레스를 위한 리눅스 서버 구축 - MariaDB의 설치
'Linux > APM' 카테고리의 다른 글
[CentOS7] PHP 7.4 설치 (0) | 2021.01.30 |
---|---|
PHP Warning:(this will throw an Error in a future version of PHP) (0) | 2020.11.26 |
[CentOS] MariaDB(Mysql), httpd 삭제하기 (0) | 2020.06.03 |
[CentOS7] php 5.2 + apache 2.2 설치 및 연동 (0) | 2020.04.27 |
[CentOS7] mysql 5.1.x 설치하기 (2) | 2020.04.24 |
댓글