일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- appium server
- SWIFT
- Jupyter Notebook
- rethinkdb
- port forwarding
- Jupyter
- nGrinder
- ubuntu
- postgres
- GoCD
- nmap
- insert
- create table
- perfect
- mysql
- ssh
- 28015
- postgresql
- ftp
- openpyxl
- STF_PortForwarding
- STF
- 실행권한
- Materials
- centos
- kitura
- sshpass
- nohup
- appium
- PYTHON
- Today
- Total
don't stop believing
MySQL 5.6 설치 (on CentOS7) 본문
CentOS7에도 MySQL을 설치해 보겠습니다. (빠르게 가겠습니다.)
먼저 yum을 업데이트 해줍니다. 그리고 wget을 설치합니다.
$ sudo yum update
$ sudo yum install wget
MySQL Repository를 다운로드 하고 적용합니다. 그리고 다시 yum을 업데이트 해줍니다.
$ sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ sudo yum update
MySQL repository가 적용되었다면 yum으로 설치해 줍니다.
설치가 정상적으로 되었다면 mysqld를 시작하고 서버 리부팅 이후에도 자동 실행될 수 있도록 설정합니다.
장성적으로 실행되고 있는지 status로 확인도 해줍니다.
$ sudo yum install mysql-server
$ sudo systemctl start mysqld
$ sudo systemctl enable mysqld
$ sudo systemctl status mysqld
mysql_secure_installation 명령으로 기본적인 보안 설정도 해줍니다.
$ sudo mysql_secure_installation
실행하면 몇 가지 보안 설정을 묻습니다.
먼저 mysql의 root 계정 비번을 넣으라고 합니다. 처음 설치한 mysql의 root 계정 비번은 없습니다. 그냥 엔터를 칩니다.
Enter current password for root (enter for none):
mysql의 root 계정 비번을 설정할 것인지 묻습니다. 당연히 설정 해야죠.
그럼 새로 설정할 비번을 두 번 써줍니다.
Set root password? [Y/n] y
New password:
Re-enter new password:
다음은 anonymous 계정을 제거할 건지 묻습니다. 인증된 계정만 접속되어야 합니다.
Remove anonymous users? [Y/n] y
원격으로 root 계정 로그인을 허용할 것인지 묻습니다.
이건 판단에 따라 다르며 저는 원격으로 root 계정 로그인을 할 겁니다.
Disallow root login remotely? [Y/n] n
테스트 데이터베이스를 지우고 접속도 못하게 합니다.
Remove test database and access to it? [Y/n] y
설정한 걸 적용할 것인지 묻습니다. 적용 합니다.
Reload privilege tables now? [Y/n] y
원격으로 mysql 접근 설정은 mysql의 config 파일이 아닌 mysql server 자체에서 설정할겁니다.
먼저 my.cnf 파일을 엽니다.
$ sudo vim /etc/my.cnf
그리고 [mysqld] 밑에 아래와 같이 추가합니다.
추가된 설정은 # 를 붙여 주석처리 되어야 합니다.
# bind-address = 127.0.0.1
# skip-networking
my.cof 파일을 저장하고 mysql을 재시작해줍니다.
$ sudo systemctl restart mysqld
이제 mysql에 root 계정으로 접소합니다.
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.6.43 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql 버전부터 확인하고 가겠습니다.
mysql> SHOW VARIABLES LIKE "%version%";
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| innodb_version | 5.6.43 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.6.43 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
7 rows in set (0.00 sec)
이제 mysql의 root 계정이 특정 ip (10.10.5.104)에서만 접속할 수 있도록 아래 쿼리로 권한을 설정합니다.
PASSWORD 부분에는 root 계정의 비밀번호를 넣습니다.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.5.104' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.5.104' IDENTIFIED BY 'ngle1@3$' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)
설정을 적용하기위해 아래 쿼리를 실행합니다.
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
적용이 되었는지 mysql.user 테이블을 확인합니다.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+------+-----------------------+-----------------------+
| User | Host | authentication_string |
+------+-----------------------+-----------------------+
| root | localhost | |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| root | ::1 | |
| root | 10.10.5.104 | |
+------+-----------------------+-----------------------+
5 rows in set (0.00 sec)
root 계정이 10.10.5.104에서 접속할 수 있도록 권한이 추가되었습니다.
이제 다른 계정도 만들어 줍니다. 저는 tongchun으로 만들어 보겠습니다. PASSWORD 부분에는 원하는 비밀번호는 넣으면 됩니다.
CREATE USER 'tongchun'@'%' IDENTIFIED BY 'PASSWORD';
특정 ip에서만 접속을 허용할 경우 % 부분에 ip를 넣으면 됩니다. %는 모든 곳에서 접속을 허용하게 됩니다.
mysql> CREATE USER 'tongchun'@'%' IDENTIFIED BY 'ngle1@3$';
Query OK, 0 rows affected (0.00 sec)
이번에는 database를 만들고 tongchun 계정에 해당 database의 권한을 줍니다.
저는 ngletest라고 database를 만들었습니다.
mysql> CREATE DATABASE ngletest;
Query OK, 1 row affected (0.00 sec)
이제 tongchun 계정에 ngletest DB의 모든 권한을 주도록 합니다.
mysql> GRANT ALL ON ngletest.* TO tongchun@'%' IDENTIFIED BY 'ngle1@3$';
Query OK, 0 rows affected (0.00 sec)
그리고 권한 설정을 바로 적용합니다.
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
만약 tongchun 계정에 모둔 DB에서 모든 권한을 주려면 아래와 같이 실행합니다.
GRANT ALL ON *.* TO tongchun@'%' IDENTIFIED BY 'ngle1@3$';
tongchun 계정에 ngletest DB의 select, insert, update, delate 권한만 주려면 아래와 같이 실행합니다.
GRANT SELECT,DELETE,INSERT,UPDATE ON ngletest.* TO 'tongchun'@'%';
이제 exit로 mysql을 종료합니다.
마지막으로 서버에 방화벽이 실행되고 있다면 방화멱에 mysql의 포트를 허용하고 재시작(reload)해줍니다.
$ sudo firewall-cmd --zone=public --add-service=mysql --permanent
$ sudo firewall-cmd --reload
여기까지 mysql을 사용하기 위한 설치와 기본 설정을 마쳤습니다.
저는 MySQLWorkbench로 관리합니다. 아래와 같이 설정 후 접속이 되는지 확인해 보겠습니다.
위 설정과 같이 Connection 정보를 추가하고 접속해 봅니다.
잘 접속되네요. 우선 여기까지 하겠습니다.
저는 데이터베이스나 테이블 생성의 경우 MySQLWorkbench를 사용합니다.
'Database > MYSQL' 카테고리의 다른 글
MySQL 한글 깨짐 (character set) (0) | 2019.06.21 |
---|---|
테이블 생성 스크립트 뽑아내기 (0) | 2019.04.15 |
mysql 설치 와 기본 설정 (on Ubuntu) (9) | 2019.02.11 |