我有一个大问题试图连接到mysql。当我跑步时:
/usr/local/mysql/bin/mysql start
我有以下错误:
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
我有mysql。Sock在/var/mysql目录下。
在/etc/my.cnf中,我有:
[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
在/etc/php.ini中有:
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock
我已经使用sudo /opt/local/apache2/bin/apachectl restart重启apache
但还是有误差。
否则,我不知道这是否相关,但当我执行mysql_config——sockets时,我得到
--socket [/tmp/mysql.sock]
我还发现这是一个权限问题。我将MySQL文件与工作安装(都在Debian 6 squeeze上)进行了比较,并不得不进行以下所有权更改(其中mydatabase是您拥有的任何数据库)。
所有权mysql: mysql:
chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/*
所有权mysql:根:
chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld
所有权mysql: adm:
chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log*
我今天遇到了这个问题。这些答案都不能解决问题。我需要做以下命令(在这里找到https://stackoverflow.com/a/20141146/633107)为我的mysql服务启动:
sudo /etc/init.d/mysql stop
cd /var/lib/mysql/
ls ib_logfile*
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
... etc ...
/etc/init.d/mysql restart
这部分是由/var/log/mysql/error.log中的以下错误指示的:
140319 11:58:21 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error.
140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB
140319 11:58:21 [ERROR] Aborting
我还看到磁盘已满错误,但只有在运行没有sudo的命令时。如果权限检查失败,则报告磁盘已满(即使您的分区还没有接近满)。
CentOS 7, 64位。新的安装。
在我的例子中,这个错误是因为我没有安装正确的MySQL服务器和MySQL客户端。
使用yum,我删除了mariadb和mysql社区版。我从MySQL官方网站下载了客户端和服务器的rpm,并安装了服务器和客户端。
在安装服务器时,我看到一条消息,MySQL root帐户的密码存储在一个文件中,我可以用sudo cat /root/.mysql_secret查看。
所以在安装客户端和服务器后,我用命令sudo service MySQL status检查MySQL是否正常工作(我想我在这样做之前重新启动了),我得到了结果。
MySQL运行(2601)[OK]
我使用.mysql_secret文件中的密码登录MySQL:
mysql -uroot -pdxM01Xfg3DXEPabpf。注意,dxM01Xfg3DXEPabpf是.mysql_secret文件中提到的密码。
然后在mysql提示符下输入以下命令修改root的密码:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');
从那以后,一切都很顺利。
当我试图启动服务器时,我也遇到了这个问题,这里的许多答案只是说启动服务器不起作用。你可以做的第一件事是执行以下命令,看看是否有任何配置错误:
/usr/sbin/mysqld --verbose --help 1>/dev/null
我确实出现了一个错误:
160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ...
160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled.
160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296'
160816 19:24:33 [ERROR] Aborting
简单的grep -HR "innodb-online-alter-log-max-size" /etc/mysql/显示了包含违规行文件的文件,所以我从文件中删除了这一行。
然后,检查我的/var/log/mysql/error.log文件:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 671088640 bytes!
160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error.
160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160816 22:46:46 [ERROR] Aborting
基于这个问题,接受的解决方案不会工作,因为我甚至无法启动服务器,所以我按照一些评论说的,删除了我的/var/lib/mysql/ib_logfile0和/var/lib/mysql/ib_logfile1文件。
这允许服务器启动,我能够连接和执行查询,但是检查我的错误日志文件,它很快就被这样的数万行填满了:
160816 22:52:15 InnoDB: Error: page 1415 log sequence number 82039318708
InnoDB: is in the future! Current system log sequence number 81640793100.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
根据这里的建议,为了解决这个问题,我做了一个mysqldump并恢复了所有数据库(参见其他几个解决方案的链接)。
$ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql
$ mysql -u root -p < backup-all-databases.sql
现在一切似乎都在按预期进行。
如果你正在重新安装mariadb,你必须检查mysql的旧进程是否还在运行,找到并杀死这个进程
ps ax | grep mysql
sudo kill -9 mysql
因为InnoDB会自动重启,你可以使用kill -15
如需重新安装*删除目录
sudo rm -rf /var/lib/mysql
创建一个默认的数据库结构并引导mariadb读取数据目录
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
然后重新配置
sudo mysql_secure_installation