MySQL 설치 및 초기 설정

MySQL 설치

sudo apt-get update
sudo apt-get install mysql-server
sudo ufw allow mysql
sudo systemctl start mysql
sudo systemctl enable mysql


최초 설치 후 설정

show variables like "%version%";
$ sudo -i #root
$ cat /etc/mysql/my.cnf
$ cat << 'EOF' > /etc/mysql/mysql.conf.d/utf8.cnf
# for utf8 characterset
[client]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8
EOF
status


데이터베이스 생성, 유저 생성, 유저 권한 부여

create user 'poogle'@'localhost' identified by '1234'; #로컬에서만 접속 가능
create user 'poogle'@'123.456.789.123' identified by '1234'; #특정 아이피에서만 접속 가능
create user 'poogle'@'%' identified by '1234'; #어디서든 접속 가능
create database testdb;
grant all on testdb.* to 'poogle'@'%' with grant option;
flush privileges;


MySQL 삭제

sudo apt-get remove --purge mysql*

# * 명령어가 안 될 때는 개별적으로 삭제가 필요함
dpkg -l | grep mysql
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean


MySQL 연동 오류 모음

CommunicationsException

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
jdbc:mysql://localhost:3306/{dbname}?{다른 설정들}&autoReconnect=true&validationQuery="select 1"

Can’t connect ~ through socket

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

참고: error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)’ – Missing /var/run/mysqld/mysqld.sock

  1. 재시작: $ sudo service mysql start
  2. $ sudo find / -type smysql.sock 파일 위치 찾기
    • my.cnf 파일 경로 수정
    • socket = /var/lib/mysql/mysql.sock
  3. MySQL multi installations일 때
# 확인 - mysql
ps -A|grep mysql

# kill process
sudo pkill mysql

# 확인 - mysqld
ps -A|grep mysqld

# kill process
sudo pkill mysqld

public key retrieval is not allowed

jdbc:mysql://localhost:3306/{dbname}?{다른 설정들}&allowPublicKeyRetrieval=true

참고: MySQL 완전 삭제 (Ubuntu/Debian)

참고: 우분투에 Mysql 설치하기 (How to install Mysql-server in Ubuntu)