1. yum 를 통한 mysql 설치
다음 명령어로 서버에 MySQL을 설치합니다.
yum install mysql-server
2. mysql 초기 설정 (secure installation)
아래와 같이 mysql_secure_installation 을 루트권한으로 실행시켜줍니다!
mysql_secure_installation
2.1 루트 암호을 설정 할 것인지에 대한 질문이므로 Y 선택 후 원하는 패쓰워드를 입력해주세요.
2.2 익명의 계정을 허용 할 것인지 묻고 있습니다. 물론 N을 해줍니다.
2.3 루트계정을 원격지에서 허용할건지에 대한 질문인데 저는 Y를 선택하여 허용하지 않았습니다.
2.4 기본으로 생성하는 test database는 지워주도록 할께요.
2.5 현재까지의 내용을 적용하기 위해 Y를 입력했습니다.
2.6 모든 설정이 완료 되었고 아래 커맨드로 접속 해볼께요~!
$sudo mysql -u root -p
명령 커맨드 창이 나오면서 커서가 깜빡.깜빡. 위와 같이 나온다면 접속이 잘된거에요~! 와우우우
3. root 계정 패스워드 초기 설정
패스워드를 변경하는 방법은 mysql 버전별로 상이하기 때문에 버전 먼저 체크하도록 하겠습니다.
SHOW VARIABLES LIKE "%version%";
버전을 확인한 결과! mysql 버전은 5.7.33 입니다.
5.7.6 이후 버전이라면 아래와 같이 쿼리를 실행합니다. 패스워드를 changepass로 하겠습니다.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'changepass';
만약 5.7.6 이전 버전이라면 아래와 같이 쿼리를 실행하면 됩니다.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('changepass');
상위버전이라면 두가지 방법 모두 가능합니다.
4. 신규 계정 생성 및 설정
이제 mysql을 사용할 계정을 만들어 주겠습니다. 웹 서버 등과 연결해 사용할 때는 root 계정을 사용하는 것 보다 계정을 만들고 권한을 부여해 사용하는 것이 좋습니다.
먼저 현재 mysql의 계정(User) 정보를 확인하겠습니다.
SELECT User, Host, authentication_string FROM mysql.user;
mydatabase라는 데이터베이스를 만들고 거기에 계정을 생성하도록 하겠습니다.
CREATE DATABASE mydatabase;
데이터베이스 리스트를 확인 하기 위해선 아래 쿼리를 날려주세요!
SHOW DATABASES;
위 캡처에 보시면 mydatabase가 보입니다!
그럼 계정을 만들도록 할께요. (user: mhlee, pass: mhleepass)
CREATE USER 'mhlee'@'localhost' IDENTIFIED BY 'mhleepass';
mysql.user 테이블에서 변경 된 내용이 있다면 flush privileges 를 해주셔야 합니다.
flush privileges;
유저가 잘 생성되었는지 확인해주시고..
SELECT User, Host, authentication_string FROM mysql.user;
새로 생성 한 mhlee 계정에서 mydatabase 데이터베이스를 사용 할 수 있는 권한을 부여하겠습니다.
GRANT ALL PRIVILEGES ON mydatabase.* to mhlee@localhost;
다시 한번 flush privileges 를 해주시고..
flush privileges;
mhlee 계정이 localhost에 어떤 권한을 부여 받았는지 확인들어갑니다.
SHOW GRANTS FOR 'mhlee'@'localhost';
GRANT USAGE ON *.* TO 'mhlee'@'localhost'
(이건 *.*는 아무 권한이 없다는 의미 입니다. mhlee 계정은 mydatabase 데이터베이스의 모든 권한을 가지고 있고 mysql의 admin이나 system을 접근할 수 있는 권한은 없다는 것을 의미합니다.
계정 뒤에 붙은 @localhost는 해당 계정이 localhost 즉 mysql이 설치된 로컬에서만 접속할 수 있다는 의미입니다. 만약 다른 서버(remote)에서 접속하고 싶다면 접속하려는 서버의 IP로 계정을 새로 만들어 줘야 합니다.)
예를 들어 192.168.0.10에서 접속하고 싶다면 아래와 같이 쿼리를 실행하면 됩니다.
CREATE USER 'user1'@'192.168.0.10' IDENTIFIED BY 'mhleepass';
GRANT ALL PRIVILEGES ON * . * TO 'user1'@'192.168.0.10' WITH GRANT OPTION;
FLUSH PRIVILEGES;
만약 특정 PC(192.168.0.10)이 아닌 어디서든 접속하려면 IP대신 %로 해주면 됩니다.
CREATE USER 'user2'@'%' IDENTIFIED BY 'mhleepass';
GRANT ALL PRIVILEGES ON * . * TO 'user2'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
생성 했던 mhlee, user1, user2 계정이 잘추가 되었는지 확인해줍시당.
mhlee 계정이 localhost 에서만 접근이 가능하도록 되어있는데 모든 외부 IP 에서 접근이 가능하기 위해 아래와 같이 바꿔주시면 됩니다!
GRANT ALL PRIVILEGES ON *.* TO 'mhlee'@'%' IDENTIFIED BY 'mhleepass';
FLUSH PRIVILEGES;
마지막으로 권한을 삭제 하기 위해선 아래 커맨드를 활용하시면 되겠습니다.
REVOKE DELETE ON *.* FROM mhlee@'%' IDENTIFIED BY 'mhleepass';
'mysql' 카테고리의 다른 글
MariaDB의 각 버전(10.2, 10.3, 10.4, 10.5, 10.6, 10.11, 11.4)의 장단점 (0) | 2024.06.29 |
---|---|
MySQL 8.0 RPM 설치 dnf (0) | 2024.04.08 |
CentOS7 yum mysql 5.7 설치하기, 8.0 SSL connection error 해결 (0) | 2023.12.30 |
mysqli_fetch (0) | 2023.09.01 |
mysql injection 예 , SQL 인젝션 예 (0) | 2022.06.24 |
댓글