亲测Windows方法
添加新用户
登录到远程阿里云服务器,打开Navicat
这里新建用户的时候,可以将主机直接改为%,这样就可以让所有ip远程访问该账号密码下的数据库
给添加权限,只让这一个用户拥有某个数据库的某些权限
打开mysql这个数据库,找到user表,找到新建的这个cartest用户,将host字段由localhost改为%,
重启mysql,必须重启
Windows重启mysql方法:
一、MYSQL服务 我的电脑——(右键)管理——服务与应用程序——服务——MYSQL——开启(停止、重启动) 二、命令行方式
Windows
1.点击“开始”->“运行”(快捷键Win+R)。
2.启动:输入 net stop mysql
3.停止:输入 net start mysql
Windows下不能直接重启(restart),只能先停止,再启动。
远程连接mysql
在创建mysql账户时,限制连接账户远程登录。也就是说,除了当前mysql所在的安装服务器外,其他
的ip(主机)都是不允许访问的,即使你的用户名和密码是正确的。这时候就要修改用户的访问权限。以及服务器开启3306端口
1 命令行方式
首先是用root用户登录到mysql的安装主机,然后进入mysql:
mysql -u root -p root是mysql的最高授权用户名,这时会提示你输入密码,正确输入密码后回车,进入mysql。回车 然后输入如下命令:
grant all on 数据库名. to ‘数据库账户名’@’%’ identified by ‘密码’ with grant option;
回车
flush privileges;
回车
注意:上面的单引号不能省,数据库名. 表示要开放的数据库下所有表,如果该连接的所有数据库都要开 放,可以用 . 代替。
‘数据库账户名’@’%’ 这里表示要开放的账户,百分号表示在任何主机都允许访问。
如果以上两步均显示 “Query OK, 0 rows affected (0.00 sec)”,那么说明命令已经成功执行,现在就可以远程 连接你的mysql数据库了。
(1).如果想赋予所有操作的权限 grant all on … to 用户名……
(2).如果想赋予操作所有数据库的所有表的权限 grant … on . to 用户名……
(3).如果想赋予某个数据库的所有表
grant … on 数据库名称.’‘ to 用户名…… ([ ]两边一定要加单引号)
(4).如果想赋予某个数据库的某张表
grant … on 数据库名称.表名 to 用户名……
(5).如果想任何客户端都能通过该用户名远程访问
grant … on … to 用户名@% ……. (要把IP地址改成[ % ])
(6).改完了以后一定要重新启动MySQL服务 用户会存到Mysql服务器上的user表中,所以下面的两种方法都可以解决这个问题:
2改表法
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,
更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”
mysql -u root -p
mysql>use mysql;
mysql>update user set host = ’%’ where user = ’root’;mysql>select host, user from user; mysql>flush privileges;
3. 授权法
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON . TO ’myuser’@’%’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION; 如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码 GRANT ALL PRIVILEGES ON .* TO ’myuser’@’192.168.1.3’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
阿里云服务器远程连接10038错误
开放3306端口
新购买阿里云的时候,有了安全组的设置,
安全组是一种虚拟防火墙用来控制ECS的出站和入站流量。在同一个VPC内,位于相同安全组的ECS实例私网互通 所以需要阿里云控制台-云服务器ecs-安全组进行配置规则,添加入规则。
目的是:允许3306端口对外开放,入方向设置,安全组出方向默认允许所有访问,即从安全组内ECS访问外部都是放行的。
阿里云window服务器关闭了防火墙,所以不用在服务器上进行设置了。
Windows开放3306端口
1:远程连接服务器,点击“开始”-“管理工具”-“高级安全Windows防火墙” 2:在打开的窗口中,左边选中“入站规则”,右边点击“新规则”来新建一个入站规则。 3:在“规则类型”中选择“端口”,然后下一步。 4:选中“特定本地端口”,输入3306,然后下一步。 5:选中“允许连接”,然后下一步。
6:这一步默认都选中就行,,然后下一步。
7:最后输入新增的入站规则名称,随便填,自己明白即可。 完成后可以在入站规则列表中可以看到新增的入站规则。 8:确认已经启动mysql服务
仍无法连接常见问题
1、Mysql的端口是否正确,通过netstat -ntlp查看端口占用情况,一般情况下端口是3306。在用工具连 接MySQl是要用到端口。例如My AdminMy Query BrowserMySQl Front等。 2、检查用户权限是否正确。
例如:用户Tester,user表里有两条记录:host分别为localhost和%(为了安全,%可以换成你需要外部连接 的IP)。
3、查看/etc/my.cnf中,skip-networking 是否已被注掉,需要注掉。
报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.51.112’ (111)
4、查看iptables是否停掉,没关的情况下,无法连接。
通过:service iptables stop临时关闭。
报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.51.112’ (113)