Query
Less than 1 minute
Query 관련
A. 유용한 쿼리
A1. GRANT 처리
A1-i. 조회
SHOW GRANT FOR :사용자;
A1-ii. (사용자에게) DML권한 부여
GRANT SELECT,DELETE,UPDATE,INSERT ON :테이블명 TO :사용자;
A1-iii. (사용자에게) DDL권한 부여
GRANT ALTER,INDEX,EXECUTE ON :테이블명 TO :사용자;
A1-iv. (사용자에게) 전 권한 부어
GRANT ALL PRIVILEGES ON :테이블명 TO :사용자;
A2. DDL 생성방법 조회
SHOW CREATE TABLE :테이블명;
A3. DML
A3-i. UPSERT문
INSERT INTO :테이블명 (
:컬럼명1, :컬럼명2 /* ...[이하생략] */
) VALUES (
:컬럼1의값, :컬럼2의값 /* ...[이하생략] */
) ON DUPLICATE KEY UPDATE
:컬럼명1 = :컬럼1의값
, :컬럼명2 = :컬럼2의값
/* ...[이하생략] */
;
A4. 기타
A4-i. 현재날짜
SELECT now()
SELECT DATE_FORMAT(now(), '%y-%m-%d')
B. CLI
B1. DB 접근
mysql -h <HOST> -P <PORT_NUMBER> -u <USERNAME> -p
B1-a. 💀ERROR 2002 (HY000)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
원인
mysql.sock
파일이 경로 및 심볼릭링크 정확하지 않아서 발생하는 오류 보통 mysql-server
가 기동되지 않아 생기는 문제
해결법
mysql.sock
위치 찾기
mysql_config --socket
2a. my.cnf
설정 된 socket경로를 심볼릭링크 설정
sudo ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
2b. /var/lib/mysql
위치에 mysql.sock
파일이 없을 경우
2b-i. /etc/my.cnf
파일이 설정한 값 중 socket
경로가 어디 있는지 보면 알 수 있다.
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
...
2b-ii. mysqld
service 동작 확인
service mysqld status
service mysqld start # 결과가 `mysql is stopped` 일 경우,