亲测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服务器关闭了防火墙,所以不用在服务器上进行设置了。
    修改mysql一个数据库远程访问权限 - 图1

    修改mysql一个数据库远程访问权限 - 图2

    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)