mysql,设置远程访问,解决本地(localhost)无法访问

1 篇文章 0 订阅
1 篇文章 0 订阅

设置远程访问

第一种(改表法):(推荐)

修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。或者直接修改成%。修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,我直接修改成%。命令:

mysql> update user set host = '%' where user = 'root';

第二种(授权法):

例如,你想root使用root从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.64的主机连接到mysql服务器,并使用root作为密码

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.64' IDENTIFIED BY 
'root' WITH GRANT OPTION; 

输入命令:

mysql> FLUSH PRIVILEGES; 

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

本地(localhost)无法访问:

本地无法连接,远程连接进行操作

1,查看用户信息:

mysql> SELECT * FROM mysql.user

在这里插入图片描述

2,给localhost添加user和password:

 update user set user='root' where host='localhost';
 update user set Password='******************' where host='localhost';

Password为密码(加码需要转码),可以复制其他行的代码
此时,本地可以访问,但是没有任何权限

3,修改权限,即***_priv:
修改所有的****_priv为Y

update user set ****_priv='Y' where host='localhost';

保证所有的****_priv为Y

此时,本地就正常了

## 方法二

https://www.cnblogs.com/lyq-biu/p/10859273.html




配置Mysql远程连接
一.赋予某个用户权限
  1.赋予权限格式:grant 权限 on 数据库对象 to 用户@IP(或者相应正则)

    注:可以赋予select,delete,update,insert,index等权限精确到某一个数据库某一个表。

    GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

    这里表示赋予该用户所有数据库所有表(*.*表示所有表),%表示所有IP地址。

 



  2.刷新权限:FLUSH PRIVILEGES;

  3.查看权限:select user,host from mysql.user;

  

 

     注:mysql是自带的数据库名,里面的表是Mysql相关配置信息端口,事件等等,其中user存放用户信息

      

 

  3.按理就可以在其他IP地址连接了(使用mysql -u用户名 -h服务器ip地址 -P端口号 -p)

二.意外
  1.配置文件种指定了blind-address:
    查看Mysql配置文件种(一般是/etc/my.cnf种)是否指定了blind-address,这表示只能是某个或某几个ip能连接。如果有就将它注释了,前面加#号注释。然后从启mysql。



    重启mysql:service mysqld restart,如果安装的是Mariadb(我的就是),则需要使用systemctl restart mariadb.service



  2.防火墙的原因:
    可能会报:ERROR 2003 (HY000): Can't connect to MySQL server on '你要连接的IP' (111)。

    原因:1.可能是Mysql端口不对(默认是3306),只需加参数 -P 你的端口指定就行;


查看mysql服务端口 

       2.还有可能是有防火墙阻止,可以通过telnet来测试(可以直接关闭防火墙)。
          防火墙相关命令:

            (1)查看防火墙状态:service  iptables status或者systemctl status firewalld或者firewall-cmd --state

            (2)暂时关闭防火墙:systemctl stop firewalld或者service  iptables stop或者systemctl stop firewalld.service

            (3)永久关闭防火墙:systemctl disable firewalld或者chkconfig iptables off或者systemctl disable firewalld.service

            (4)重启防火墙:systemctl enable firewalld或者service iptables restart  或者systemctl restart firewalld.service

              (5)永久关闭后重启:chkconfig iptables on

  

  3.端口未开启:(我遇到的就是这个原因)
      Mysql:ERROR 2003 (HY000) 110(连接超时)

      查看你的服务器是否把对应端口打开,未打开启动就行了。
#CentOS 7 采用了 firewalld 防火墙

#查询是否开启27017端口: 
[root@localhost ~]# firewall-cmd --query-port=27017/tcp
no 
#开启27017端口:
[root@localhost ~]# firewall-cmd --add-port=27017/tcp
success

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# VS2012 86系统 mysql-5.5.27-win32 功能:利用动软代码生成器 从 数据库表或者视图中生成 的三层结构代码 实现 数据增删改查。 如果可以,请下载资源中 修改 的动软代码生成器 C#模板生成 1、由于之前使用 动软生成 java 网页源码,比较成功,此处编写C#程序时沿用,感觉更加适合。 2、直接调用动软的相关dll和生成的三层代码,可以较快的实现增删改查操作。 3、由于一些dll版本的问题及动软生成器自身的一些不完善,产生了一些问题并查找了挺久,所以把可以实现的版本发布出来共享。 前提: 使用的是 mysql数据库时才可能会出现以下问题 问题: 1、MySql.Data.dll 必须是5.6.1以上版本,否则会出现 “向信号量添加给定计数将导致其超出它的最大计数” 的问题。 2、动软代码生成时,必须增加该命名空间 using MySql.Data.MySqlClient; 3、动软代码必须修改 “工具”-“选项”弹出窗 后,点击 ”代码生成设置“-”字段类型映射“-”参数符号“中删除 mysql @,添加mysql ? 4、如果不修改3的设置,在增删改时 参数设置会失败。 5、mysql保存或者修改时,中文会出现乱码,这时必须 在DbHelperMySQL类的 连接字中增加Charset=utf8;即 protected static string connectionString = "Server=localhost;User Id=root;Password=root;Persist Security Info=True;Database=mnzfz;Charset=utf8;"; 6、如果要在局域网中远程访问,请 修改 mysql 权限:grant select,update,insert,delete on *.* to 'root'@'192.168.0.1' identified by "123456";

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值