有三种方法:
方法一(不推荐)、本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改为"%"
#mysql -u root -prootmysql>use mysql
mysql>update user set host = '%' where user = 'root'
mysql>select host, user from user
方法二、直接授权(推荐)
从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:(首先登陆Linux服务器,填写下面代码即可)
[root@localhost software]# mysql -u root -prootmysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION
mysql>FLUSH PRIVILEGES
*** 作完后切记执行以下命令刷新权限
FLUSH PRIVILEGES方法三:终极方法
注释bind-address = 127.0.0.1找到mysql.cnf
把bind-address = 127.0.0.1 前面加上 #
即 #bind-address = 127.0.0.1
首先我们在linux系统上安装mysql,本文默认linux系统可以联网或者已经挂载光盘iso了,我们使用命令 apt-get install mysql-server 命令进行安装,安装完成后,查看mysql是否启动,执行命令 ps -e |grep mysql。
验证初始是否允许远程连接,由于本次虚拟机IP为192.168.2.120,因此我们执行mysql -h 192.168.20.120 -P 3306 -u root -proot(备注:-proot,root指root账号的密码),可以得到结果连接不上。
假如我们不采用远程连接,可以连接上,命令为:mysql -u root -proot。
请点击输入图片描述
请点击输入图片描述
接下来,我们连接上数据库,执行命令use mysql使用mysql数据库。
并查看用户表信息,执行命令为:select Host,User from user。
执行结果如下图所示。
请点击输入图片描述
通过上面步骤可以得到数据表 user内的值,下面我们对表进行更新记录允许远程访问,
执行命令为:update user set Host='%' where User ='root' limit 1
(该条命令意思为更新user表内User值为root的第一条记录的Host值设置为%)更新完成后,执行上一步查询命令进行验证
请点击输入图片描述
执行强制刷新命令flush privileges
执行完毕后,关闭数据库连接。
请点击输入图片描述
更改mysql安装目录下的my.cnf文件。
一般默认路径在/etc/mysql/下,找到bind-address = 127.0.0.1 这一行,可以对其进行删除,注释或者将127.0.0.1更改为0.0.0.0,修改完毕后保存。
请点击输入图片描述
重启mysql,命令为service mysql restart。进行远程登陆测试,可以看到已经允许远程连接了。
请点击输入图片描述
最近在配置mysql的时候遇到了各种问题,现在归纳总结一下。mysql安装完毕以后,本机可以连接,但是其他机器不行,连不上,原因有以下几个:
1 权限问题,可以用grant给某个用户分配权限,比如localhost/某些ip地址等等,具体可以搜索“mysql grant”,资料也很多,这里就不展开了
2 防火墙问题。RHEL系统的防火墙在安装的时候是默认打开的,这样其他机器连这台的mysql就会被拒绝,最简单的办法就是把防火墙关掉。(切换到root用户,输入setup,进入服务器配置界面,选择“Firewall configuration”,把Firewall: [*] Enabled 的星号去掉,保存,退出)
3 绑定ip的问题。Ubuntu server系统安装的mysql,在my.cnf配置文件里面是有个bind ip选择项,如果bind ip=127.0.0.1 或者这里的ip和你当前机器的ip不一样,就会造成mysql不能被其他机器连接,解决方法是注释掉bind ip这行,或者把ip写正确。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)