Linux CentOS6.6系统中安装mysql源码包的方法

2019-10-13 18:33:15于海丽

export PATH=/usr/local/mysql/bin:$PATH

这样,我们就可以在任何目录直接使用 /usr/local/mysql/bin 目录中的命令,而不用再带上绝对路径了,或者说不用再切换到该目录中了。

(6)常见的错误及解决方法

错误1 :无法在本地连接mysql

当MySQL服务成功启动后,却发现无法在本地连接上mysql,即在本地使用命令 mysql -uroot -p 时,却出现错误信息“-bash: mysql: command not found”。如果已经确定mysql命令存在且访问方式正确,但还是出现该错误信息,则很有可能是 socket 套接字文件的绝对路径没有明确指定导致的。

解决方法:

修改mysql的配置文件 /usr/local/mysql/my.cnf,加入下面的代码:

[client]
socket=/tmp/mysql.sock

也就是,在配置文件中,明确指定socket套接字的位置。mysql.sock文件会在MySQL服务启动后,自动生成。如果不清楚它的具体路径,可使用命令 find / -name mysql.sock,进行查找。

修改mysql的配置文件后,关闭MySQL服务,然后重新开启MySQL服务。再来在本地连接mysql试试,一般就没问题了。

错误2:无法在远程连接mysql

在本地连接mysql没有问题,但是在其他电脑上连接mysql,就算使用同样的用户名(如:root)和密码,也无法连接上mysql。

这是因为,linux系统的mysql服务器出于安全考虑,默认只允许在本地登录数据库服务器。

mysql服务器中,有一个系统数据库,名为mysql,该库中有一个user数据表,user表有很多字段,比如:host、user、password和权限字段等等。mysql服务器,通过该表来控制各个用户的操作权限。

所以,只要对该表的数据进行修改或在表中新增一条授权记录,就可以了。

解决方法:

首先,我们不急着解决问题,先看看问题的原因。在本地登录root用户,查看下mysql数据库中user表的记录信息。

mysql -uroot -p
show databases;
use mysql;
show tables;
select host,user,password from user;

这时,我们会发现,所有用户(包括root)的host列的值基本上都是localhost或127.0.0.1,也就是说,默认只允许从本地登录和操作mysql。可以证明,上面的分析是正确的。

然后,我们再来解决问题。给指定的用户分配所有的操作权限,并允许其从其他电脑登录和操作MySQL服务器。一般来说,仅执行下面的命令就可以完成授权,并解决问题:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '';

上面的命令执行完后,就会在mysql.user表中新增一条授权记录。此后,我们也就可以从远程的其他电脑登录这台linux的MySQL服务器了。

如果还是有问题,可以执行命令:flush privileges; 该命令的作用是使刚刚新增的授权记录立即生效(一般都不用执行该命令)。