사랑하애오
article thumbnail

MariaDB를 설치할 리눅스는 Ubuntu Linux 20.04 LTS 버전이다.

MySQL이나 MariaDB 둘 다 SQL문을 사용합니다.

ubuntu 20.04 LTS 버전의 uname -a

많은 사람들이 간과하는 것이지만 모든 DBMS는 Server 모듈과 Client 모듈로 구성된다. 설치 대상 서버의 기능에 따라서 Server 모듈만 설치할 수도 있고 Client 모듈만 설치할 수도 있다. 물론 둘다 설치하는 것이 일반적이긴 하다.

 

MariaDB 또한 Server와 Client로 구성되어 있다. 

 

먼저 MariaDB 서버를 설치한다. 설치 전에 apt-get update 명령을 실행하여 패키지 목록을 최신화하는 것을 잊지 말자. 실제 설치되어 있는 패키지를 업그레이드 하는것이 아니라 현재 설치된 버전보다 더 최신버전이 있는지 목록만 없데이트 하는 것이다.

 

다음과 같이 apt install mariadb-server 명령을 실행하여 MariaDB 서버를 설치한다.

mariadb-server 설치

위 화면에서 sudo는 현재 계정이 ubuntu 계정이므로 apt install mariadb-server 명령이 실행되는 동안 root 권한으로 실행하라는 의미다. 사실 보안 상 sudo는 사용하지 않는 것이 좋다. 마치 sudo 명령을 사용하면 보안성이 높아지는 것으로 알고 있는 엔지니어들이 있는데... 결코 그렇지 않다는 점을 기억하자. sudo는 엔지니어들이 편하자고 사용하는 것이지 보안성이 좋은 것이 절대 아니다. 속지말자..!!

 

mariadb-server 패키지가 설치되었다면 다음은 mariadb-client를 설치하자. 이 클라이언트 모듈은 MariaDB에 접속하기 위한 다양한 도구가 포함되어 있다고 보면된다. apt-get install mariadb-client 명령을 실행하면 된다.

mariadb-client 설치

파일 설치는 허무할 만큼 간단하게 완료된다.

 

다음은 MariaDB의 계정과 보안설정 등을 수행하는 스크립트를 실행하여야 한다. 이 스크립트는 아직도 mysql~~로 시작한다. 아니 MySQL 설치단계에서의 보안성 설정과 너무도 동일하다.

아직도 mysql의 흔적이 남아 있다

스크립트를 실행하면 현재 root의 패스워드를 묻는데...(화면을 캡처하지 못했다. -.-) 이 서버에 MariaDB를 처음설치하는 것이므로 n 을 입력하고 다음단계로 넘어가자.

 

다음단계에서는 mysql의 root 비밀번호를설정하겠냐고 묻는다.

mariadb의 관리자 계정 비밀번호 초기화

당연히 y를 입력하고 비밀번호를 설정해준다. 비밀번호는 숫자, 영문 대소문자 그리고 숫자와 특수문자를 모두 포함하면 좋고 길수록 더 좋다.

 

다음은 익명(anonymous) 계정을 지우겠냐고 물어본다.

anonymous account remove

익명계정은 지우는 것이 정답이다. ID와 비밀번호 없이 왜 DB 접속을 허용하는가? 애초에 이런걸 왜 만드는지 모르겠다. 

 

다음은 MariaDB의 관리자계정인 root 계정으로 원격에서의 접속을 허용할지를 묻는다. 

DB의 원격접속 허용 여부 선택

만약 원격PC에서 sqlyog 등을 통해 root 계정으로 MariaDB에 접속하길 원한다면 n 을 입력해 원격접속을 허용해야 하며 phpmyadmin과 같은 웹 기반 관리도구를 이용해 root로 MariaDB에 접속하는 것으로 충분하다면 y를 눌러 원격접속을 허용하지 않는 것을 권장한다.

 

다음은 test db를 삭제할 것인지를 묻는다.

테스트 용 DB 삭제 여부 선택

사용할 일이 없다면... 삭제하는 것을 권장한다.

 

지금까지 설정한 내용을 즉시 반영하겠냐고 묻는다.

reload privilege tables

y를 입력해 즉시 반영한다. 

 

이것으로 MariaDB의 설치와 보안설정이 완료되었다.

 

접속테스트를 해보자. mysql -u root -p 명령을 root 권한으로 실행해 접속해 보자.

mariadb에 관리자 권한으로 접속하기

비밀번호를 묻는데... 앞에서 입력해주었던 비밀번호를 입력한다. 입력한 비밀번호가 맞다면 정상적으로 접속된다. 

 

show databases; 명령을 실행해 기본 DB의 목록을 확인한다.

show databases 명령

MariaDB의 기본 적인 3개의 데이터베이스가 보인다. 아직도 mysql 이란 DB가 보인다.

 

버전을 확인해보자.

MariaDB 10.3.25

-----------------------------------------------------------------------------------------------------------------------------------

MySQL ERROR 1698 (28000): 에러 해결

 

 

WSL 2를 설치하고 우분투 20 에 MySQL 을 깔았는데 root 계정으로는 MySQL root 로 연결이 가능한데 일반 사용자로는 다음 에러를 내며 연결이 되지 않았습니다.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

구글링해보니 MySQL root 는 인증 방식을 Local 에 있는 Unix Domain socket 으로 하기때문에 root 권한이 있어야만 연결이 가능하다고 합니다.

운영 서버는 저런 정책을 갖는게 맞겠지만 로컬이나 개발용은 불편하니 다음 방법으로 인증 방식을 변경하면 됩니다.

 

root 사용자로 mysql 에 연결합니다.

sudo mysql -u root -p mysql
 

사용자별 Auth plugin 을 조회합니다. 

SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | auth_socket           |
+------------------+-----------+-----------------------+
 
 

root 사용자는 auth_socket 인증 방식을 사용하는 것을 볼 수 있습니다. 이것을 caching_sha2_password 방식으로 변경합니다.
예전 버전은 auth plugin 이 mysql_native_password 방식일 수 있으며 그럴 경우 아래 쿼리와 같이 mysql_native_password 로  설정하세요. 잘못 설정할 경우 root 로도 로그인이 불가능합니다.

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
 
 
UPDATE user SET plugin='caching_sha2_password' WHERE User='root';
 

root 암호가 설정되지 않았다면 설정해 줍니다.

 SET PASSWORD FOR 'root'@'localhost' = '1234';
 
 

변경된 정책을 반영해 줍니다.

FLUSH PRIVILEGES;
 
 

정책 변경이므로 MySQL 을 재구동합니다.

sudo systemctl restart mysqld
 
 

이제 일반 사용자로 MySQL root 권한으로 연결되는지 확인합니다.

 mysql -u root -p mysql

-----------------------------------------------------------------------------------------------------------------------------------

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number: 에러 해결

 

Problem:

mysql> GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '1234';
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

 

Solution:

Option:1

mysql> GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234';

Query OK, 0 rows affected (0.00 sec)

 

Option:2

mysql> SELECT PASSWORD('1234');

+-------------------------------------------+

| PASSWORD('1234')                       |

+-------------------------------------------+

| *CDE65254CC57BC0C3D0A85509B5CEA654126BF56 |

+-------------------------------------------+

1 row in set (0.00 sec)

 

mysql> GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*CDE65254CC57BC0C3D0A85509B5CEA654126BF56 ';

Query OK, 0 rows affected (0.00 sec)

 

 

 

출처

https://blogger.pe.kr/885

 

우분투 20.04 에 MariaDB 설치하기

python의 웹 프레임워크인 Flask를 테스트하면서 DB를 연동해야할 일이 생겼다. MySQL을 설치할지 아니면 MariaDB를 설치할지를 고민하다 MariaDB를 설치하기로 했다. [Flask 웹 프레임워크] Blueprint를 이용

blogger.pe.kr

https://www.lesstif.com/dbms/mysql-error-1698-28000-89555999.html

 

MySQL ERROR 1698 (28000): 에러 해결

예전 버전은 auth plugin 이 mysql_native_password 방식일 수 있으며 그럴 경우 아래 쿼리와 같이 mysql_native_password 로  설정하세요. 잘못 설정할 경우 root 로도 로그인이 불가능합니다.

www.lesstif.com

http://www.nazmulhuda.info/error-1372-hy000-password-hash-should-be-a-41-digit-hexadecimal-number

 

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number - Mohammad Nazmul Huda

Problem: mysql> GRANT USAGE ON *.* TO 'moon'@'localhost' IDENTIFIED BY PASSWORD 'Jkt45s2'; ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number Solution: Option:1 mysql> GRANT USAGE ON *.* TO 'moon'@'localhost' IDENTIFIED BY 'Jkt45s2';

www.nazmulhuda.info

 

profile

사랑하애오

@사랑하애

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!