(mysql) 초기 설정 및 계정, DB
1
2
sudo service mysql start
sudo mysql 또는 mysql -u root [-p] [db\_name]
ERROR 1045 (28000): Access denied for user 뜨면서 안될 때는 패스워드를 설정해준다.
1
mysqladmin -u root -p password
SHOW
자주 쓰는 SHOW
명령어
1
2
3
4
help show;
SHOW DATABASES;
SHOW TABLES;
SHOW FIELDS FROM tbl\_name; -- Type | Null | Key | Default | Extra
SET PASSWORD
1
SET PASSWORD FOR user@host = PASSWORD('pw');
root@localhost
의 패스워드부터 설정한다. user@host
형태로 지정하기 때문에 같은 user name이어도 어디에서 접근하느냐에 따라 패스워드를 다르게 줄 수 있다.
my.cnf
파일에 password 항목을 추가해놓으면 이 pw와 같은 pw를 가진 계정일 경우 패스워드 입력 없이 로그인 가능하다.
1
2
3
4
5
[client]
password = pw
port = 3306
socket = ".../mysql.sock"
...
DB 생성 / 삭제
하나의 쿼리로 작성해야 한다.
1
2
CREATE DATABASE db\_name
CHARACTER SET utf8 COLLATE utf8\_general\_ci;
* Collation은 특정 문자 셋으로 저장된 값들을 비교, 검색, 정렬하기 위한 비교 규칙들의 집합을 의미한다. utf8로 저장되었으니 utf8을 비교하기 위한 Collation을 지정해주어야 한다. * CREATE
의 반대는 DROP
이다.
CREATE USER
''
로 묶어주는 것이 좋다.
1
CREATE USER 'user'@'host' IDENTIFIED BY 'pw';
계정 정보는 모두 mysql
DB에 저장되므로, 각 DB마다 DB에 속하는 계정을 가지고 있는 것이 아니다. 반대로 계정에 따라 접근할 수 있는 DB가 다르므로 계정에 DB가 속한다고 보는 것이 더 낫다. 각 계정의 DB, 테이블, 컬럼 권한 설정은 GRANT
로 한다.
mysql.user
계정 정보는 mysql
이라는 DB의 user
테이블에 들어있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information\_schema |
| c9 |
| mysql |
| performance\_schema |
| phpmyadmin |
+--------------------+
따라서 계정을 추가하고 싶다면 여기에 INSERT
하는 방법도 있다.
1
2
3
4
5
6
7
8
9
SELECT host, user, password FROM mysql.user;
+------------------+--------------+--------------------------------------+
| user | host | password |
+------------------+--------------+--------------------------------------+
| umbum | % | |
...
처음 접속하면 OS 계정 이름으로 password 없이 어디서든 접근할 수 있는( %
) 계정이 만들어져 있다.
익명 사용자 삭제
실수로 root를 삭제하면 재설치해야하니 반드시 root 패스워드를 설정한 다음에 진행한다.
1
2
use mysql;
DELETE FROM user WHERE password = '';
GRANT
1
2
GRANT all privileges ON db\_name.\* TO user@host;
flush privileges;