今天在Ubuntu服务器上安装MySql的时候遇到了一些问题,记录下来,以防以后忘记。
安装环境:Ubuntu14.04
安装命令:
//安装Mysal服务端
//会提示输入root密码
sudo apt-get install mysql-server
//安装Mysql客户端
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
错误一描述:
远程连接MySql的时候出现错误:错误码2203 Can`t connect to MySql server on 'XXX.XXX.XX.XXX'
解决思路:首先以为是防火墙的问题,但是仔细查看了服务器上的防火墙,发现防火墙早已经被我关闭了,然后只有网上检索找到了问题,在/etc/mysql/my.cnf中有一段代码:
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
其中bind-address表示只绑定了本地连接,将该代码注释之后,重启MySql服务:
sudo service mysql restart
该问题貌似只在Ubuntu上存在,在RedHat中并没有此问题。
错误二描述:
在解决了上述问题之后,又出现了新的错误:错误码:1130 Host 'XXX.XX.XX.XX' is not allowed to connect to this MySql Server
解决思路:第一反应就是没有权限,然后检索复习了一下赋权的操作,记录下来以防忘记:
通过Ubuntu上的MySql客户端连接MySql,执行命令(前提是要安装MySql的客户端哦):
#改命令执行完后输入密码
mysql -u root -p
方法一:改表法
通过修改mysql数据库中的user表来进行赋权,Sql如下:
#选择mysql数据库
mysql> use mysql;
#更改root用户权限,字段host表示允许连接的ip,%表示任意ip
mysql> update user set host='%' where user='root' ;
#更新权限这一步很重要,一定不能忘记!!因为使用的是改表法,比较非正规,所以需要
#更新权限
mysql> flush privileges;
方法二:授权法
#该命令解释:
#grant命令表示赋权操作
#all privileges 表示所有的权限,其中权限有select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限
#on 后面跟着的是 <数据库名>.<表名> *.* 表示全部的数据库和表
#to 后面跟着的是 <用户名>@<IP地址> %表示任意IP
#identified by 后面是密码
#with grant option 表示具有传递授权功能
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
使用其中一种方法完美解决问题!