云服务器一键配置lamp后mysql实现外网navicat连接
2018-09-05 本文已影响0人
不过意局bugyj
在腾讯云服务市场中一键配置了
然后本来配置好的mysql也没用了,navicat连不上,连密码都不知道是什么了,便按以下步骤修改密码和权限最后正常使用!
1.密码不知道,关闭密码验证进入mysql修改密码。
在服务器中找到mysql的my.cnf(我的是linux,windows找my.ini)文件(我的在/etc目录下),编辑该文件
vi my.cnf
在文件内容[mysqld]下添加一行
skip-grant-tables
esc退出编辑 :wq保存并退出
service mysqld restart 重启mysql服务
然后再登录mysql
mysql -u root -p 登录mysql
输入任意密码都可以进入mysql
然后修改密码:
use mysql;
#删除的记录要insert进去,然后修改密码
update user set password=password("new_pass") where user="root";
flush privileges;
然后删除my.cnf中的skip-grant-tables
2.设置mysql只允许内网连接权限为允许所有外网都能连接
这里写两种方法(我用的是第一种)
**第一种:用root用户登陆,然后:**
grant all privileges on *.* to 创建的用户名 @"%" identified by "密码";
flush privileges; * 刷新刚才的内容*
格式:grant 权限 on 数据库教程名.表名 to 用户@登录主机 identified by "用户密码";
@ 后面是访问mysql的客户端ip地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为
本地访问(那此用户就不能远程访问该mysql数据库了)。
同时也可以为现有的用户设置是否具有远程访问权限。如下:
use mysql;
update db set host = '%' where user = '用户名'; (如果写成 host=localhost 那此用户就不具有远程访问权限)
flush privileges;
grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
第二种就是使用grant语句添加用户
首先在数据库本机上用root用户
mysql>grant all privileges on *.* to admin@"%" identified by 'something' with grant option;
(用户名是admin 密码something)
添加一个用户admin并授权可从任何其它主机发起的访问(通配符%)。使用这一条语句即可。
然后使用insert添加用户信息
mysql>insert into user values('%','admin',password('something'), 'y','y','y','y','y','y',
'y','y','y','y','y','y','y','y')
用户信息可在mysql数据库中的users表中查看。
显示%就是可以任意外网都可以连接了!
3.检测3306端口是否打开,如果是关闭的就打开
检测命令
netstat -an|grep 3306
我这里是打开了的,如果没有打开的话显示的就是
tcp 0 0 (服务器ip地址):3306 0.0.0.0:* LISTEN
如何打开呢?
同样找到my.cnf文件
找到bind-address = (服务器本地ip地址)这样的配置信息,然后将这条配置信息注释掉或者将ip换成你想被允许连接的电脑的ip。
service mysqld restart重启
服务器本机打开3306端口不一定能行,我们还要在腾讯云平台配置安全组,将3306端口打开!
如何配置安全组这里就不说了!
然后再navicat中就像连接本地的myql一样连接就行了!(填服务器的公网ip)