dot*_*hen 11 configuration mysql-5.5
在全新的 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.
Run Code Online (Sandbox Code Playgroud)
我实际上已经阅读过,/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]
Run Code Online (Sandbox Code Playgroud)
但是我找不到在哪个脚本--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
Run Code Online (Sandbox Code Playgroud)
错误告诉我Remove all --log-error configuration options
。因此/etc/mysql/my.cnf
,我编辑并注释掉了以下行:
log-error = /var/log/mysql/error.log
Run Code Online (Sandbox Code Playgroud)
现在我没有错误但仍然无法登录:
$ 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)
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?我应该如何进行?
编辑
现在我已经注释掉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/
Run Code Online (Sandbox Code Playgroud)
这是我尝试运行 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
Run Code Online (Sandbox Code Playgroud)
可以看出,日志中没有写入任何新内容,并且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
Run Code Online (Sandbox Code Playgroud)
这1
在日志的最后一行添加与较早echo
,并表示没有新的加入到日志中。
您安装了mysql-server-core-5.6
部分失败或部分安装的 。
该-explicit_defaults_for_timestamp
只限于MySQL 5.6是。可能是部分安装mysql-server-core-5.6
添加了这个选项。我现在建议您删除任何痕迹mysql-server-core-5.6
并重新初始化数据目录。
杀死任何正在运行的 mysqld 进程:
ps aux | grep mysql
kill pid
Run Code Online (Sandbox Code Playgroud)卸载mysql-server-core-5.6
软件包:
apt-get remove mysql-server-core-5.6
Run Code Online (Sandbox Code Playgroud)
文件列表在这里
重新初始化数据库目录:
一种。 rm -Rf /var/lib/mysql/*
B. mysql_install_db /var/lib/mysql
注释掉里面的!includedir /etc/mysql/conf.d/
选项my.cnf
杀死任何现有的 MySQL 进程,然后使用该skip-grant-tables
选项启动 MySQL 。
A. 获取 mysqld 守护进程的确切路径:
which mysqld_safe
Run Code Online (Sandbox Code Playgroud)
B. 在没有授权表的情况下运行 MySQL:
/mysqld_safe_directory/mysqld_safe --skip-grant-tables &
ex /bin/mysqld_safe
Run Code Online (Sandbox Code Playgroud)
C. 确保 mysql 正在监听:
netstat -tlpn
Run Code Online (Sandbox Code Playgroud)
您应该会看到端口 3306。
D. 如果是这样,请登录 MySQL:
mysql -u root -h 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
E. 设置新密码:
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28813 次 |
最近记录: |