[MySQL] yum 설치 By starseat 2022-09-22 11:34:23 db Post Tags 저번 [nginx 설치](https://starseat.net/blog/view/94) 에 이서 `MySQL` 도 설치할 일이 생겨 `MySQL` 설치법을 기록하려 한다. # 설치 준비 - 설치 환경: `Red Hat v7.6`  `yum` 을 사용하여 설치할 것이기 때문에 `yum` 설치 정보를 확인해야 한다. 먼저 [MySQL Community Downloads](https://dev.mysql.com/downloads/repo/yum/) 에 접속하여 설치 버전을 확인해야 한다. 설치할 OS 가 v7 이기에 해당되는 버전의 `Download` 버튼을 클릭한다.  하단의 `No thanks, just start my download.` 를 우클릭 후에 `링크 주소 복사`  - 복사된 링크 주소 ``` https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm ``` # 설치 ## MySQL Repository 추가 이제 터미널로 서버에 접속하여 `yum` 으로 설치해야 한다. `yum install` 뒤에 복사된 링크를 붙여 넣는다. ``` yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm ```  아래 명령어로 `MySQL Repository` 를 확인해보자. ``` // MySQL Repository 목록 확인 yum repolist enabled | grep "mysql.*" // yum search 명령어로 설치 가능한 mysql 패키지 목록 확인 yum search mysql // yum 리스트 확인 yum list mysql* ``` ## MySQL 설치 이제 `MySQL Repository` 가 추가되었으니 설치해보자 ``` yum install -y mysql-server ```  하단에 `Complete!` 문구가 보이면 정상 설치된 것이다. ## 설치 확인 `mysqld -V` 명령어로 설치된 버전을 확인해보자. ``` [root@-------db ~]# mysqld -V /usr/sbin/mysqld Ver 8.0.30 for Linux on x86_64 (MySQL Community Server - GPL) ``` # 기동 및 접속 ## MySQL 기동 - 기동 ``` systemctl enable mysqld systemctl start mysqld ``` - 확인 ``` systemctl status mysqld ```  ## 접속 서버 설치 과정에서 임시 비밀번호가 발급되는데 이 비밀번호로 접속 - 임시 비밀번호 확인 ``` grep 'temporary password' /var/log/mysqld.log ```  - 접속 (임시 비밀번호 사용) ``` mysql -u root -p ```  ## Root 계정 비밀번호 변경 임시 발급된 비밀번호를 계속 사용할 수 없으니 비밀번호를 변경해야 한다. ``` mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '{비밀번호}'; ``` 만약 아래와 같은 오류가 나타난다면 비밀번호가 간단해서 그런 것이다. 복잡한 비밀번호를 하거나 비밀번호 정책을 바꿔주면 된다. ``` mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'test'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements ``` ### 비밀번호 정책 확인 ``` mysql> show variables like 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.02 sec) ``` ### 비밀번호 정책 변경 비밀번호 정책을 보고 `value` 값을 변경하면 된다. 아래는 `policy` 값을 `LOW` 로 바꾸는 예시이다. 이와 유사하게 다른 옵션도 변경해주면 된다. ``` mysql> set global validate_password.policy=LOW; Query OK, 0 rows affected (0.00 sec) ``` # 외부 접속 지금까지의 과정으로 설치는 끝났으나 외부 접속은 불가능하다. `root` 계정으로 접속 `host` 가 `localhost` 만 있기 때문이다. 따라서 외부 허용이 가능한 설정이 필요하다. ## 설정 - 계정 확인 ``` mysql> select host, user from mysql.user; +-----------+------------------+ | host | user | +-----------+------------------+ | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+------------------+ 4 rows in set (0.00 sec) ``` - 외부 접속용 계정 생성 ``` mysql> create user 'root'@'%' identified by '{비밀번호}'; ``` - 권한 할당 ``` mysql> grant all privileges on *.* to 'root'@'%'; mysql> flush privileges; ``` ## 확인 이제 터미널이 아닌 db 접속 툴로 설치된 db에 접속 테스트를 해보자. `DBeaver` 로 테스트 하였다.  그런데... 바로 안되고 아래와 같은 에러 팝업이 나타나네??  `Dirver properties` 탭에서 `allowPublicKeyRetrieval` 항목을 `false > true` 로 변경한다.  이제 `Test Connection` 버튼을 클릭하면 정상 접속이 가능해진다.  # Reference - [[MySQL 8.0] CentOS7에 MySQL 8.0설치하기](https://1mini2.tistory.com/86) - [MySQL Password Validation](https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html) - [MySQL 원격 접속 허용](https://zetawiki.com/wiki/MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9) Previous Post [DBeaver] tibero 연결 Next Post Oracle -> Mariadb 전환