2016-07-10 3 views
1

변경 사항 my.cnf에 대한 변경 사항은 mysql 환경에 아무런 영향을주지 않습니다. 다음은 어떤 일이 일어 났는지 요약 한 것입니다 ...my.cnf에 대한 변경 사항이 적용되지 않습니다 (Ubuntu 16.04, mysql 5.6)

우분투 16.04에 mysql 5.7을 설치했지만 비 호환성 문제로 인해 mysql 5.6으로 다운 그레이드해야한다는 것을 깨달았습니다.

나는 쉽다 관련 응용 프로그램을 제거하고 같은/등은/MySQL과는/var/lib 디렉토리/mysql을

I 다음 mysql을 - 5.6 (서버 및 클라이언트) 설치 및 관련 패키지에 남아있는 디렉토리를 제거했습니다.

은 또한 MySQL은 5.6를 실행하는 서버에서 덤프에서 하나의 데이터베이스를로드 할 수 있었다하지만 같은 서버에서 두 번째 덤프에서 두 번째 데이터베이스를로드하려고 할 때,이 오류가있어 :

ERROR 2006 (HY000) at line 1721: MySQL server has gone away 

봤을 때 my.cnf 파일을 통해 다양한 옵션을 설정하는 결과가 나타났습니다. /etc/mysql/my.cnf.fallback :

내가 실행

...

updatedb && locate my.cnf 

은 ... 난 단지 다시 동일한 파일에 대한 모든 링크를 네 개의 결과를 참조하십시오. 예 : /etc/mysql/my.cnf.fallback == /etc/mysql/my.cnf

루트 홈 디렉토리 또는 내 사용자의 홈 디렉토리에 .my.cnf 파일이 없습니다. my.cnf 파일에 오타를 넣고 예상 오류를보고 파일이로드되었음을 알기 위해 mysql을 다시로드했습니다. 나는 그 잘못된 코드를 제거하고 다음 추가 :

service mysql restart 

또는

service mysql stop 
service mysql start 

또는

/etc/init.d/mysql stop 
/etc/init.d/mysql start 
을 : 다음 다양한 방법으로 실행하여 mysql을 다시로드

[mysqld] 
max_allowed_packet=1073741824 

나는 그 때 thi를 유지했다 이 my.cnf 파일에서 설정되지 않습니다되었음을 나타내는의 기본 값 :

mysql> SHOW VARIABLES LIKE 'max_allowed_packet'; 
+--------------------+---------+ 
| Variable_name  | Value | 
+--------------------+---------+ 
| max_allowed_packet | 4194304 | 
+--------------------+---------+ 

나는이 할 경우

mysql> SET GLOBAL max_allowed_packet=1073741824; 

을 로그 아웃하고 다시 mysql 클라이언트에, 나는 올바른 값을 참조하십시오

mysql> SHOW VARIABLES LIKE 'max_allowed_packet'; 
+--------------------+------------+ 
| Variable_name  | Value  | 
+--------------------+------------+ 
| max_allowed_packet | 1073741824 | 
+--------------------+------------+ 

물론 mysql 서버를 다시 시작하면 값이 되돌아갑니다.

검색 능력이 부족합니다. 나는 무엇을 잘못하고있을 수 있습니까?

답변

3

분명히 my.cnf.fallback은 올바른 구성 파일이 아닙니다.

이 명령을 사용하면 가능한 출력을 얻을 수 있습니다.cnf 위치 :

$ which mysqld 
/usr/sbin/mysqld 

$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options" 
Default options are read from the following files in the given order: 
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf 

이는 mysql이 my.cnf 파일의 위치를 ​​확인한다는 의미입니다.

mv /etc/mysql/my.cnf.fallback /etc/mysql/my.cnf 
+0

나는 당신이 제안한대로했는데 효과가있었습니다. 감사. 나는 아직도 혼란 스럽다. 왜냐하면 /etc/mysql/my.cnf는 /etc/mysql/my.cnf에 대한 링크 였기 때문에 /etc/mysql/my.cnf 링크는 /etc/mysql/my.cnf.fallback에 대한 링크로 tern에 있었다. 그래서 그것을 읽을 것이라고 생각했다. 또한 내가 언급 한 바와 같이 무작위 문자열을 fallback 파일에 넣으면 mysql이 다시 시작될 때 불평을하지만 mysql이 여러 링크를 따라갈 수 없다고 생각 하는가? 이상한. 다시 한 번 감사드립니다! –

2

설정 파일은 괜찮 : 간단하게 /etc/mysql/my.cnf.fallback/etc/mysql/my.cnf로 이름을 바꿉니다. 근본 원인은 Ubuntu 16.04 용 MySQL 5.6 패키지의 버그입니다. 당신이 당신의/var을 선택하면

/당신은 아마이 같은 라인을 볼 수 있습니다/시스템 로그 로그 :

Sep 15 18:56:09 ip-172-31-18-162 kernel: [ 383.840275] audit: type=1400 audit(1505501769.234:50): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/my.cnf.fallback" pid=25701 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0 

등/mysql을// (A 심볼릭 링크 파일에 대한 액세스를 거부한다 AppArmor의라는 보안 도구 내 .cnf.fallback).

이 해결 방법을 사용하면 mysqld에서 심볼릭 링크를 읽을 수 있습니다.

echo '/etc/mysql/** lr,' >> /etc/apparmor.d/local/usr.sbin.mysqld 
systemctl reload apparmor 

이제 mysqld는 사용자 지정 구성을 볼 수 있습니다.

이 버그는 MySQL 5.7 우분투 패키지에서 수정 된 것 같습니다.

+0

와우,이 문제는 나를 파멸 시켰고 마침내 트릭을 만들었습니다. 정말 고마워!!! –

관련 문제