MySQL을 신규로 설치하고 기존 백업받은 파일을 import하려고 하면 아래와 같은 오류가 발생하곤 합니다.

"MySQL server ha gone away" 즉, 맛이 가버렸다는(?)...ㅠ.ㅠ

이런경우 MySQL설정파일의 옵션을 변경해주면 됩니다.

리눅스의 경우 보통은 /etc 나 mysql 설치 디렉토리에 my.cnf 라는 이름으로 존재합니다.

윈도우의 경우 "C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" 로 존재하는데, 이 파일의 경우 ProgramData가 숨김디렉토리 형태이기 때문에 쉽게 찾기가 어렵습니다.

MySQL기동시 설정파일을 읽어들여서 기동하기 때문에 기동 스크립트나 서비스 구동옵션을 참조하면 되는데, 윈도우의 경우 (서비스로 등록되어 있는 경우) 서비스 목록에서 MySQL을 선택, 속성메뉴를 선택합니다.

중간의 실행파일 경로를 마우스로 드래그해보면 실행을 위한 설정파일 정보가 나옵니다. 


제 경우는 아래와 같이 나오네요.

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57


설정파일의 위치를 찾았다면 이제 해당 파일을 열어서 옵션을 변경해 줍니다.

각 옵션에 대한 대략의 내용은 아래링크를 참조하시면 됩니다.

http://mysqldba.tistory.com/26 


그중에 import시 데이터가 큰경우 하나의 패킷이 커지면서 MySQL서버가 다운되버리는 경우가 있는데, 이 옵션을 적절하게 조정해 줍니다.

이제 다시 import를 해보면 정사적으로 진행되는것을 확인할수  있을것입니다.











자꾸 까먹는 비밀번호 때문에 ㅠ.ㅠ;;;

1. 실행중인 mysqld를 정지하고 mysqld_safe를 이용하여 구동합니다.

mysqld_safe 의 위치는 'whereis mysqld_safe'  로 찾습니다.

옵션은 grant를 무시하라는 옵션인데,  --skip-grant-tables 입니다.

root@mysql ~]# /usr/bin/mysqld_safe --skip-grant-tables

2. mysql client를 이용하여 패스워드 없이 mysql db에 접속합니다.

root@mysql ~]# mysql -uroot mysql

3. user 테이블을 업데이트 합니다.

mysql>update user set authentication_string=PASSWORD("새로운 비밀번호"),
    -> password_expired='N',
    -> plugin='mysql_native_password'
    -> where User='root';
Query OK, 2 rows affected, 1 warning (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 1

4. 테스트 후 이상없다면 mysqld_safe를 중지하고 정상적인 mysqld 를 실행합니다.

 



centos 6.9 mysql 5.7 설치

Posted 2017. 8. 15. 23:25

기존 테스트 환경의 개발DB가 CentOS6.2 에 MySQL5.5.x 였다.

다른 개발서버에 있던 dump를 import 하려니 오류가 발생한다. 

sql_mode를 바꿔야 하는데, 이게 5.7부터 변경된듯 하다.

한두개 바꿔서 될듯하지 않아서 새로운 mysql을 설치하기로 했다. 

나의 개발환경은 Windows 2008 Enterprise 의 Hyper-V 에 가상으로 Linux를 설치하여 구성한다. 

설치과정은 대략 다음과 같다.


1. 기존 CentOS 6.2 VHD 를 이용하여 새로운 가상서버를 만든다.

2. CentOS 6.x부터 추가된 rules.d / persistance 를 변경해서 네트워크를 잡는다.

3. yum update -y를 하고나니 OS 버전이 6.2에서 6.9로 업그레이드 되었다.

4. mysql 5.7을 설치한다. ( 설치 정보는 여기 를 참고했다. )  

  yum 관련 오류가 발생하면 yum clean all 을 한번 실행하면 잘 될수도 있다.

5. 설치 마지막 과정에 mysql_secure_installation 을 실행하는데,  자꾸 오류가 난다.

Error: Access denied for user 'root'@'localhost' (using password: YES)

6. 검색후 다음과 같은 내용을 찾았다. 임시비밀번호를 로그에서 찾으라는 것.

  grep 'temporary password' /var/log/mysqld.log

7. 이전과 달라진듯 한다. 이전엔 현재 OS의 비밀번호를 입력했었는데...

이후 비밀번호 설정과정에서도 영문대소문자, 숫자, 특수문자까지... 보안이 강화되었다. ㅠ.ㅠ;;; 내부에서만 쓸건데...


이상으로 새로운 버전의 CentOS6.9에 mysql 5.7을 설치한 과정 끝.


사용자 추가 및 권한 설정 ( https://dev.mysql.com/doc/refman/5.7/en/grant.html )

1. create database with utf8

CREATE DATABASE mydb
  DEFAULT CHARACTER SET utf8  
  DEFAULT COLLATE utf8_general_ci;

2. create user & grant privileges

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

GRANT ALL ON db1.* TO 'jeffrey'@'localhost';

flush privileges;



« PREV : 1 : 2 : 3 : 4 : ··· : 9 : NEXT »