Usage: /etc/init.d/mysql start|stop|restart|status5. 모든 호스트에서 mysql 접속 허용하기
# mysql -u root -p 후 비밀번호 입력 mysql> use mysql; mysql> GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'korea123'; mysql> flush privileges; mysql> exit # sudo service mysql restart
/etc/mysql/mysql.conf.d/mysqld.cnf 파일의 [mysqld] 설정 예 [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking collation-server = utf8_unicode_ci character-set-server = utf8 skip-character-set-client-handshake # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 0.0.0.0
참고1: use mysql; use 데이터베이스명; 으로 mysql 데이터베이스는 mysql 설정을 저장하고 있는 데이터베이스임. 해당 데이터베이스에서 작업을 하겠다는 의미임. 참고2: mysql 접속 허용 관련 설정 (5장 참고) 1) 로컬에서만 접속 허용 mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@localhost identified by "korea123"; 2) 특정 호스트에만 접속 허용 mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@www.blim.co.kr identified by "korea123"; 3) 모든 호스트에서 접속 허용 mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@'%' identified by "korea123"; 옵션 상세 (1) ALL – 모든 권한 / SELECT, UPDATE – 조회, 수정 권한등으로 권한 제한 가능 예) GRANT INSERT,UPDATE,SELECT ON *.* TO 'username'@'localhost' IDENTIFIED BY '비밀번호'; (2) database.table – 특정 데이터베이스에 특정 테이블에만 권한을 줄 수 있음 / *.* – 모든 데이터베이스에 모든 테이블 권한을 가짐 (3) root – 계정명 (4) korea123 – 계정 비밀번호 참고3: flush privileges; (5장 참고) - user, db 같은 grant table을 INSERT, UPDATE 등을 써서 직접 데이터 입력/수정을 할 경우, grant tables를 다시 읽어야 권한 설정이 적용됨. - 서버를 재기동하지 않고, grant table을 새로 읽으라는 명령이 flush privileges 이지만, INSERT, UPDATE 가 아닌 GRANT 명령을 사용했을 경우에는 해당 명령 생략 가능 (하지만 확실하게 하기 위해 일반적으로 사용)
# mysql -u root -p # show databases; # use mysql; # show tables; # use information_schema; # show tables; # exit참고: https://dev.mysql.com/doc/refman/5.7/en/