mac에서는 brew를 통해 설치할 수 있다.
brew install mysql
설치 후 계속 사용해야 하므로 서비스로 시작한다.
brew services start mysql
그런데 만약 문제가 생긴다면 재설치가 필요할 수도 있는데 아래와 같이 해보자.
/usr/local/Cellar/mysql/8.x.x/bin 에서
brew remove mysql
brew cleanup
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/var/mysql
ubuntu에서는 apt를 통해 설치해보자.
sudo apt install mysql-server
sudo service --status-all 에서
mysql이 있고 앞에 +표시가 되어있어야 한다.
이 경우 역시 설치에 실패할 경우가 있는데, 클린 설치를 위해 다음과 같이 삭제를 진행할 수 있다.
sudo systemctl stop mysql
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
sudo apt autoremove
sudo apt autoclean
최초에는 비밀번호 없는 root 계정으로 접속해보자.
sudo mysql -u root
일단 mysql> 프롬프트가 뜨면 루트의 계정부터 비번을 설정하자. mysql스스로도 mysql이라는 database에 이런 정보를 넣어두기 때문에 처음에 'use mysql'로 시작한다.
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootpw';
Query OK, 0 rows affected (0.00 sec)
mysql>
우분투라면 위의 설명처럼 하는 것 대신 초기 보안 설정을 mysql_secure_installation의 step에 맞춰 할 수도 있다.
이 스텝은 비번의 복잡도, root의 비번 등 좀 더 안전한 설정을 할 수 있게 도와준다.
sudo mysql_secure_installation
새로운 user도 root의 비번 변경과 비슷한 방식으로 진행된다. use mysql은 이미 했다면 스킵하고,
create user 'hello'@'192.168.2.%' identified by 'hellopw';
여기서 @뒷부분은 이 사용자가 어디서 접속할 수 있는지를 나타낸다. %는 어떤 것으로도 대체되어도 혀용된다.
'hello'@'localhost' = db가 설치된 컴에서만 사용가능한 사용자
'hello'@'192.168.2.10' = 이 2.10 ip에서 접속하는 hello (아마도 내부 네트워크)
'hello'@'192.168.2.%' = 192.168.2. 으로 시작하는 내부 ip에서 접속하는 hello
'hello'@'123.124.234.111' = 이 ip에서 접속하는 hello (외부 네트워크)
'hello'@'%' = 접속지 제한이 없는 사용자.
db도 만들어보자. 요즘은 이모티콘을 많이 사용하므로 이것까지 받아줄 수 있는 utf8mb4형태의 charset을 사용하자.
mysql> create database sampledb character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)
mysql>
아직 이 sampledb는 root밖에 사용하지 못한다. hello라는 사용자에게 sampledb의 여러 작업을 허가해보자.
mysql> grant all privileges on sampledb.* to 'hello'@'192.168.2.%';
Query OK, 0 rows affected (0.00 sec)
mysql>
sampledb.*
에서 * 대신에 더 세부적인 작업을 허가할 수 있지만 우선은 이정도만 하자.
그렇지만 잘 되지는 않는다. mysql에서 접속할 수 있는 클라이언트로 해당 계정정보를 넣고 접속해보면, 아래와 같이 실패가 난다.
mysql은 처음 설치하면 내부에서만 접속 가능한 상태이다. 이를 풀어보자. 아래처럼 설정파일을 열어, bind-address 항목을 0.0.0.0 으로 바꾸자.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1 // localhost 접속만 가능한 상태
bind-address = 10.0.0.1,10.0.1.1,10.0.2.1 // 세 ip에 대해 오픈한 상태
bind-address = 0.0.0.0 // 모든 ip에 대해 오픈한 상태
외부접속허가는 user를 만들 때 처럼 %를 쓸 수는 없다. ip를 일일이 나열하거나 0.0.0.0을 하는 수 밖에 없다. ufw등의 별도의 방화벽을 같이 사용하면 더 좋겠다.
접속이 허가된 모습
mysql은 daemon/service 개념으로 돌아가는 dbms이고, 이를 편하게 다루려면 client 프로그램이 있는 것이 낫다.
Sequel Ace
라는 프로그램은 깔끔하면서도 안정적이고 강력한 기능을 제공한다. 무엇보다 무료.
mac의 appstore에서 "sequel ace"를 검색하면 나온다.
자주 접속하는 db는 즐겨찾기 해 둘 수 있다.