MySQL을 구성하거나 시작할 수 없습니다


11

완전히 새로운 Kubuntu 14.04 설치에서을 실행했습니다 sudo aptitude install mysql-server-core-5.6. 의 일부 KDE 패키지의 종속성으로 인해 설치를 완료 할 수 없었습니다.이 패키지 mysql-server-core-5.5는 교체되었을 것입니다. 이제 실행할 때 sudo aptitude install mysql-server-5.5비밀번호를 지정한 후이 오류가 발생합니다.

Configuring mysql-server-5.5
Unable to set password for the MySQL "root" user
An error occurred while setting the password for the MySQL administrative user. This may have happened
because the account already has a password, or because of a communication problem with the MySQL server.
You should check the account's password after the package installation.
Please read the /usr/share/doc/mysql-server-5.5/README.Debian file for more information.

나는 실제로 읽었 /usr/share/doc/mysql-server-5.5/README.Debian지만 내 상황과 관련이 없습니다. MySQL 로그는 다음을 도와줍니다.

$ tail /var/log/mysql/error.log 
140818 10:17:16 InnoDB: Completed initialization of buffer pool
140818 10:17:16 InnoDB: highest supported file format is Barracuda.
140818 10:17:16  InnoDB: Waiting for the background threads to start
140818 10:17:17 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:17:17 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:17:17 [ERROR] Aborting

140818 10:17:17  InnoDB: Starting shutdown...
140818 10:17:18  InnoDB: Shutdown completed; log sequence number 1595675
140818 10:17:18 [Note]

그러나 어떤 스크립트에서 --explicit_defaults_for_timestamp옵션이 설정 되어 있는지 찾을 수 없습니다 . 옵션 을 피 mysql하지 않고 시작 했지만 여전히 시작되지 않습니다.service--explicit_defaults_for_timestamp

$ ps aux | grep mysql
dotanco+ 25458  0.0  0.0  11748   928 pts/4    S+   10:30   0:00 grep --color=auto mysql

$ sudo mysqld_safe --skip-grant-tables &
[1] 25470
140818 10:30:54 mysqld_safe Can't log to error log and syslog at the same time.  Remove all --log-error configuration options for --syslog to take effect.
140818 10:30:54 mysqld_safe Logging to '/var/log/mysql/error.log'.
140818 10:30:54 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140818 10:30:57 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    sudo mysqld_safe --skip-grant-tables

$ ps aux | grep mysql
dotanco+ 25810  0.0  0.0  11748   932 pts/4    S+   10:31   0:00 grep --color=auto mysql

오류가 나에게 알려줍니다 Remove all --log-error configuration options. 따라서 /etc/mysql/my.cnf다음 줄을 편집 하고 주석 처리했습니다.

log-error  = /var/log/mysql/error.log

이제 오류가 발생하지 않지만 여전히 로그인 할 수 없습니다.

$ sudo mysqld_safe --skip-grant-tables &
[1] 26558
140818 10:34:37 mysqld_safe Logging to syslog.
140818 10:34:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140818 10:34:40 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    sudo mysqld_safe --skip-grant-tables

$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

무엇이 문제 일 수 있습니까? 어떻게 진행해야합니까?

편집하다

나는에 explicit-defaults-for-timestamp줄을 주석 처리했습니다 my.cnf. 다음은 전체 파일에서 헤더 주석을 뺀 것입니다.

$ cat /etc/mysql/my.cnf 

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

[mysqld_safe]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
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
#explicit_defaults_for_timestamp

bind-address    = 127.0.0.1

#log-error      = /var/log/mysql/error.log

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

symbolic-links=0

!includedir /etc/mysql/conf.d/

이것은 MySQL을 실행하려고 할 때 발생하는 일입니다.

$ sudo echo 1 >> /var/log/mysql/error.log

$ tail /var/log/mysql/error.log 
140818 10:31:49  InnoDB: Waiting for the background threads to start
140818 10:31:50 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:31:50 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:31:50 [ERROR] Aborting

140818 10:31:50  InnoDB: Starting shutdown...
140818 10:31:51  InnoDB: Shutdown completed; log sequence number 1595675
140818 10:31:51 [Note] 
140818 10:31:51 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
1

$ sudo service mysql start
start: Job failed to start

$ tail /var/log/mysql/error.log 
140818 10:31:49  InnoDB: Waiting for the background threads to start
140818 10:31:50 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:31:50 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:31:50 [ERROR] Aborting

140818 10:31:50  InnoDB: Starting shutdown...
140818 10:31:51  InnoDB: Shutdown completed; log sequence number 1595675
140818 10:31:51 [Note] 
140818 10:31:51 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
1

$ grep explicit_defaults_for_timestamp /etc/mysql/my.cnf /etc/init.d/mysql /etc/default/mysql
/etc/mysql/my.cnf:#explicit_defaults_for_timestamp
grep: /etc/default/mysql: No such file or directory

보다시피, 로그에는 새로운 것이 기록 explicit_defaults_for_timestamp되지 않으며 옵션은 어디에도 설정되지 않습니다.

다시 설치할 수 mysql-server-core-5.5있었지만 문제가 해결되지 않았습니다.

$ sudo aptitude reinstall mysql-server-core-5.5
The following packages will be REINSTALLED:
  mysql-server-core-5.5 
0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 3,213 kB of archives. After unpacking 0 B will be used.
Get: 1 http://il.archive.ubuntu.com/ubuntu/ trusty-updates/main mysql-server-core-5.5 amd64 5.5.38-0ubuntu0.14.04.1 [3,213 kB]
Fetched 3,213 kB in 1s (3,163 kB/s)                
(Reading database ... 217167 files and directories currently installed.)
Preparing to unpack .../mysql-server-core-5.5_5.5.38-0ubuntu0.14.04.1_amd64.deb ...
Unpacking mysql-server-core-5.5 (5.5.38-0ubuntu0.14.04.1) over (5.5.38-0ubuntu0.14.04.1) ...
Replaced by files in installed package mysql-common (5.6.20-1ubuntu14.04) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up mysql-server-core-5.5 (5.5.38-0ubuntu0.14.04.1) ...

$ sudo service mysql status
mysql stop/waiting

$ sudo service mysql start
start: Job failed to start

$ tail /var/log/mysql/error.log 
140818 10:31:49  InnoDB: Waiting for the background threads to start
140818 10:31:50 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:31:50 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:31:50 [ERROR] Aborting

140818 10:31:50  InnoDB: Starting shutdown...
140818 10:31:51  InnoDB: Shutdown completed; log sequence number 1595675
140818 10:31:51 [Note] 
140818 10:31:51 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
1

그건 1로그의 마지막 줄에와 이전에 추가 된 echo, 새로운 로그에 추가 된 아무 것도 없음을 나타냅니다.


netstat -tlpn을 실행할 때 MySQL 용 포트 3306이 보입니까?
Craig Efrein

@CraigEfrein : 아니오, 포트 3306이 수신되지 않습니다. 심지어 시스템을 다시 시작하여 부팅시 MySQL이 시작되는지 확인했지만 작동하지 않았습니다.
dotancohen

그리고 --explicit_defaults_for_timestamp, 아직 보지 않은 곳을 볼 수 있습니다. /etc/mysql/my.cnf, /etc/init.d/mysql 및 / etc / default / mysql
Craig Efrein

감사합니다. 현 timestamp은 단지 안에 etc/mysql/my.cnf있었고 나는 그것을 주석 처리했습니다. 그러나 나는 여전히 로그에 동일한 언급을 얻습니다.
dotancohen

홈 디렉토리에 my.cnf가 있습니까?
Vérace

답변:


4

이 설치 mysql-server-core-5.6부분적으로 실패 또는 부분적으로 설치 한.

-explicit_defaults_for_timestamp단지 MySQL은 5.6입니다. 부분 설치시이 mysql-server-core-5.6옵션이 추가 되었을 수 있습니다. 이제 mysql-server-core-5.6데이터 디렉토리의 흔적을 제거 하고 다시 초기화하는 것이 좋습니다 .

  1. 실행중인 mysqld 프로세스를 종료하십시오 :

    ps aux | grep mysql
    kill pid
    
  2. mysql-server-core-5.6패키지를 설치 제거하십시오 .

    apt-get remove mysql-server-core-5.6

    파일 목록은 여기

  3. 데이터베이스 디렉토리를 다시 초기화하십시오.

    ㅏ. rm -Rf /var/lib/mysql/*

    비. mysql_install_db /var/lib/mysql

  4. !includedir /etc/mysql/conf.d/옵션을 주석으로 처리하십시오 .my.cnf


기존 MySQL 프로세스를 종료 한 다음 skip-grant-tables옵션을 사용하여 MySQL을 시작하십시오 .

A. mysqld 데몬의 정확한 경로를 얻으십시오 :

which mysqld_safe

B. 권한 부여 테이블없이 MySQL을 실행하십시오.

/mysqld_safe_directory/mysqld_safe --skip-grant-tables &
ex /bin/mysqld_safe

C. mysql이 듣고 있는지 확인하십시오.

netstat -tlpn 

포트 3306이 표시되어야합니다.

D. 그렇다면, MySQL에 로그인하십시오 :

mysql -u root -h 127.0.0.1

E. 새 비밀번호를 설정하십시오.

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

크레이그 감사합니다. 다시 설치할 수 mysql-server-core-5.5있었지만 문제가 해결되지 않았습니다. 질문에 추가하겠습니다.
dotancohen

@dotancohen, 내 답변 업데이트
Craig Efrein

감사합니다. 나는 완전히, 5.6의 흔적을 제거 모두 rm'ed /var/lib/mysql/var/log/mysql. mysql_install_db명령 때문에 실패 resolveip를 찾을 수 없습니다. 그런 다음 설치 하기 위해 ( mysql-server-5.5와 함께 설치되지 않은 것 같습니다 mysql-server-core-5.5) resolveip. 동안의 설치 mysql-server-5.5내가 가지고 Unable to set password for the MySQL "root" user원점으로 돌아, 다시 오류를!
dotancohen

@dotancohen이 답변을 업데이트했습니다. 이것은 MySQL이 실제로 듣고 있는지에 달려 있습니다.
Craig Efrein

감사. 사실, mysqld_safe바로 죽는다 : 40818 16:52:52 mysqld_safe Logging to '/var/lib/mysql/bruno.err'., 140818 16:52:52 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql, 140818 16:52:54 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended.
dotancohen

1

my.cnf 에이 줄이 있습니다.

[pol@localhost mysql-5.6.19-linux-x86_64]$ grep expli my.cnf
explicit-defaults-for-timestamp = TRUE

my.cnf 매개 변수는 밑줄이 아닌 하이픈을 사용해야한다고 생각합니다.


감사합니다. 당신이 옳습니다, 나는 그것을 그리워했지만 그 라인을 가지고있었습니다. 이제 mysql이 시작되지 않지만 로그에 아무것도 기록되지 않습니다. 질문을 업데이트하겠습니다.
dotancohen

나는 Xubuntu에서 (Unity 데스크탑을 견딜 수 없습니다!) 이와 같은 문제가있는 악마를 가졌습니다. 이제 소스에서 빌드합니다. 관심이 있으시면 정확히 어떻게하는지 작성하겠습니다 . 많은 시행 착오 끝에 내가 여기서하는 일은 여기 에서 조정됩니다 . sudo apt-get install xxx보다 약간 더 많은 작업이지만 적어도 내 파일의 위치와 문제가 발생하면 어떻게 해야하는지 알고 있습니다!
Vérace

감사합니다.이 방법으로 문제를 해결할 수 없으면 연결 지침을 시도해 보겠습니다.
dotancohen

글쎄, 그것은 일식을 통해 mysql을 컴파일하고 실행하려는 사람들을위한 것입니다. 저는 mysql을 정상적으로 실행하려는 사람에게 적합하도록 조정했습니다. 왜 5.5를 사용하고 있습니까?
Vérace

실제로, 나는 5.6을 선호하고 일식을 사용하지 않습니다.
dotancohen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.