###问题### 在ubuntu上通过源码安装了MySQL 5.6,结果按照文档装完怎么也不能连接上。
在启动了mysqld_safe
之后,使用文档中介绍的 mysqladmin version
查看服务启动情况,会得到一条错误
error: 'Can't connect to local MySQL server through socket '/opt/mysql/mysql.sock'
通过查看日志,发现这是由于MySQL的运行帐户没有权限向mysql的安装目录(我这里是/opt/mysql)写入文件导致的。也就是说mysqld没有权限创建mysql.sock,当然也就链接不了了。
###解决方案### 解决这个问题的方法有很多种
####1. 修改安装目录用户#### 可以把mysql安装目录的owner设置为MySQL的运行帐户。比如使用 /bin/mysqld_safe --user=mysql
启动的MySQL服务。可以通过下面的命令将MySQL的安装目录的用户修改为 mysql
cd MYSQLDIR
chown -R mysql .
####2. 修改安装my.cnf#### 也可以通过修改mysql的配置文件来解决。 mysql的服务端和客户端工具都可以读取 /etc/mysql/my.cnf 来获取全局的配置信息。通过修改配置文件里的socket 选项,将mysql.sock文件定位到一个mysql运行用户可以访问的文件夹去就可以了。例如我的:
[mysql]
socket=/opt/mysql/data/mysql.sock
port=3306
[mysqladmin]
socket=/opt/mysql/data/mysql.sock
port=3306
[mysqld]
basedir=/opt/mysql
datadir=/opt/mysql/data
port=3306
socket=/opt/mysql/data/mysql.sock
这里mysql, mysqladmin是对客户端工具mysql, mysqladmin的配置,mysqld是对服务端的配置
###吐槽###
这个问题是由于文档的安装步骤中有个小bug。文档里说运行 mysql_install_db 之后,可以把mysql安装目录的用户再设置成 root
Most of the MySQL installation can be owned by root if you like. The exception is that the data directory must be owned by mysql. To accomplish this, run the following commands as root in the installation directory:
shell> chown -R root .<br /> shell> chown -R mysql data
但你做了这一步之后,如果启动 mysql的时候是使用的是一个非root帐户(如: mysql),就没有权限向你的mysql安装目录写入文件了,也就会导致这个问题。如果是严格按照文档来的话就会产生这个问题,坑死爹了