zoukankan      html  css  js  c++  java
  • sql点滴43—mysql允许用户远程登陆

     方法1

    局域网连接mysql报错:
    ERROR 1130: Host '192.168.0.220' is not allowed to connect to this MySQL server

    解决方法:

    可能是帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" 或添加一个用户为“%”  。    

    想让局域网中的所有机器都能连接MySQL数据库,首先要给MySQL开启远程连接的功能,在MySQL服务器控制台上执行MySQL命令:

    grant all privileges on *.* to root@"%" identified by 'abc' with grant option; 
    flush privileges; 

    其中上面两行代码的意思是给从任意ip地址连接的用户名为root,密码为abc的用户赋予所有的权限。其中的"%"为任意的ip地址,如果想设为特定的值也可以设定为特定的值(以通配符%的内容增加主机/IP地址,也可以直接增加IP地址)。

    做完这些之后,局域网内的mysql服务器可以访问了。 

    添加用户

    添加远程用户admin密码为password

    GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'password' WITH GRANT OPTION

    方法2

    1.用root用户登陆,然后执行下面语句

    grant all privileges on *.* to zhangsan@"%" identified by "123456";
    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;

    方法3 

    使用grant语句添加:首先在数据库本机上用root用户登录mysql(我是用远程控制linux服务器,相当于在服务器本机登录mysql了),然后输入:

    mysql>grant all privileges on *.* to admin@localhost identified by 'something' with grant option;

    添加一个用户admin并授权通过本地机(localhost)访问,密码"something"。

    mysql>grant all privileges on *.* to admin@"%" identified by 'something' with grant option;

    如果添加一个用户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表中查看,这里不在介绍了就。数清y的个数哦。好了,使用admin帐号连接试试看,我是屡试屡成功哦,呵呵!

    方法4

    添加远程用户admin密码为password 

    grant all privileges on *.* to admin@localhost identified by 'password' with grant option 
    grant all privileges on *.* to admin@"%" identified by 'password' with grant option

    由于项目开发的要求数据库的设计不得不用远程模式。但是数据库的远程设置并没那么简单,该项目的数据库是mysql5.0。刚开始以为只要装了数据库服务器就可以进行远程链接了,但是mysql的设置是为了用户的安全,系统默认的设置是不允许远程用户连接,只能本地的用户连接。只要我们设置下系统的管理员用户的host这一项的值就可以给远程的用户访问了。

    方法6

    用Navicat for MySQl访问远程mysql数据库,出现报错,显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server“。

    解决办法如下:

    经查阅,错误原因是:本地IP(xxx.xxx.xxx.xxx)没有访问远程数据库的权限。于是下面开启本地IP(xxx.xxx.xxx.xxx)对远程mysql数据库的访问权限。首先远程连接进入服务器,在cms中输入mysql -u root -p,然后回车,输入密码后回车进入mysql命令行。

    输入use mysql;

    输入select user,password,host from user;可以看到host中只有localhost主机。我们需要将xxx.xxx.xxx.xxx也添加到这里才对。

    添加方法如下:
    输入
    grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密码";
    这相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,包括远程访问权限。
    然后再输入
    flush privileges;
    这相当于是重新加载一下mysql权限,这一步必须有。

    再次输入select user,password,host from user;可以看到host中已经有了新加的IP。

    不过还有一个问题,发现双击打开某张表的时候很慢,至少要3秒。
    原因是:
    当远程访问mysql时, mysql会解析域名, 所以会导致访问速度很慢, 会有2,3秒延时!
    解决办法:
    修改mysql安装目录下的my.ini,加上下面这个配置可解决此问题。在[mysqld]下加入:skip-name-resolve
    保存退出后重启mysql服务。
    然后访问速度就和本地一样快啦。

     http://blog.chinaunix.net/uid-9370128-id-1687475.html

  • 相关阅读:
    转载:SSH无法连接error:couldnotloadhostkey:/etc/ssh/ssh_host_dsa_key
    docker修改运行中的容器端口映射
    查看iis进程(w3wp)所对应的程序池名称 / 端口使用情况
    jenkins+sonar+钉钉 发布.net
    windows使用jenkins 搭建 .net 自动发布IIS站点平台
    Redis
    20191209---自定义异常类--转载
    借助pywinauto实现本地文件上传--转载
    python虚拟环境搭建,虚拟环境迁移,三方库安装
    python 在不同层级目录import 模块的方法
  • 原文地址:https://www.cnblogs.com/tylerdonet/p/4539504.html
Copyright © 2011-2022 走看看