linux 서버에 mysql 설치 및 workbench 연결

정현진·2023년 1월 2일
0

프로젝트를 서버에 배포해보면서 공부했던 내용입니다.
Linux서버에 mysql 설치 하는 법과 workbench와 연결해보면서 생겼던 오류들을 기록했습니당

linux에 mysql 설치

  1. 서버 접속

  2. mysql 설치

  • sudo apt-get install mysql-server
  1. mysql 접속
  • sudo mysql -u root -p
    비밀번호 : 1234
  1. mysql database 선택
  • use mysql;

database 선택 안하면

이러한 에러 발생

  1. user 테이블 보려면
  1. 사용자 추가
  • create user [username]@localhost identified by '[password]';
    // 사용자를 추가하면서 패스워드까지 설정
  • create user ‘[username]’@’%’ identified by '[password]';
    // 기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 ‘%’로 하여 똑 같은 계정을 추가한다.
  1. 데이터베이스 확인 (스키마)
  • show databases;
  1. 데이터베이스 생성 (스키마)
    - create database [DB명] default character set utf8;
    // default character set을 지정하지 않으면 한글이 깨져서 나온다.

  2. 사용자에게 데이터베이스 사용권한 부여

  • GRANT ALL privileges ON [DB명].* TO [username]@locahost IDENTIFIED BY '[password]';
    Ex) grant all privileges on testdb.* to hyeonjin@localhost identified by ‘hyeonjin1234!’;
    -> hyeonjin이라는 user에 testdb라는 데이터베이스의 모든 테이블에 대한 권한 부여

mysql workbench 연결

Connection Name은 자기가 원하는 이름 입력한다.
이때, SSH Hostname 은 서버 주소를 넣고, SSH username에는 서버 username을 넣는다.
pem키가 있으면 Key File을 넣고, 안되면 그 위에 SSH Password Store in Vault을 클릭하여 각자 주소에 해당하는 비밀번호를 입력한다.

< error list >

  1. spring boot에서 linux 서버로 데이터베이스 연결을 하고 싶은데 외부 접속이 막혀서 연결이 되지 않을 때

1) vi /etc/mysql/mysql.conf.d/mysql.cnf
2) bind_address = 127.0.0.1부분을 #을 이용하여 주석처리
3) mysql 재시작 -> sudo /etc/init.d/mysql restart

  1. 500 에러 나면

Root Cause
org.springframework.jdbc.BadSqlGrammarException:
Root Cause
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table '[DB이름].MEM_TBL' doesn't exist

mysql> show variables like 'lower_case_table_names';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 0     |
+------------------------+-------+
대소문자 구분함 1로 바꿔줘야함

cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf

[mysqld] 밑에 한줄 추가
lower_case_table_names = 1

sudo /etc/init.d/mysql restart

다시 확인
mysql> show variables like 'lower_case_table_names';

0개의 댓글