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; 该命令的作用是使刚刚新增的授权记录立即生效(一般都不用执行该命令)。








