首页 > 数据库 >mysql设置远程访问权限

mysql设置远程访问权限

时间:2022-10-27 12:00:58浏览次数:57  
标签:xxx host user mysql 权限 root 远程 localhost

mysql怎么开启远程登录功能
进入cmd命令模式。
mysql-hlocalhost-umysql-p
Enterpassword:******
连接数据库。
mysql>usemysql;(此DB存放MySQL的各种配置信息)
Databasechanged
mysql>selecthost,userfromuser;(查看用户的权限情况)
+-------------+-------+
|host|user|
+-------------+-------+
|localhost||
|localhost|root|
|localhost||
|localhost|mysql|
+-------------+-------+
6rowsinset(0.02sec)
由此可以看出,只能以localhost的主机方式访问。
mysql>Grantallprivilegeson*.*to'root'@'%'identifiedby‘password’withgrantoption;
(%表示是所有的外部机器,如果指定某一台机,就将%改为相应的机器名;‘root’则是指要使用的用户名,里面的password需要自己修改成root的密码)
mysql>flushprivileges;(运行为句才生效,或者重启MySQL)
QueryOK,0rowsaffected(0.03sec)
mysql>selecthost,userfromuser;(再次查看用户的权限情况)
+-------------+-------+
|host|user|
+-------------+-------+
|%|mysql|
|%|root|
|localhost||
|localhost|root|
|localhost||
|localhost|mysql|
+-------------+-------+
mysql>exit
现在再试试:从远程cmd那边看能不能登录,能登录的话,一般用代码也是可以连接的到的。
本回答由网友推荐
怎么设置mysql服务器要设置远程ip访问权限
你的MYSQL数据库里面有一个数据库,名字教做mysql,里面有个表,名字叫做user,你看一下这个表的结构和现有数据,你就知道应该怎么做了,比如你可以添加一条数据,Host为你指定的IP,user可以是%,password就不管了,后面设置相应的权限(可以全部都是Y),这样那个机器无论用什么用户和密码都可以连接数据库,而拥有你指定的权限。
耐心点吧,我相信你一看就明白。
参考资料:
本回答由提问者推荐
MySQL数据库怎么实现远程连接访问
或者新加条记录,“host” 项为要访问的ip地址,并授权。重启mysql服务。
第二:在系统防火墙添加例外端口:3306,并允许例外。
错误提示:
ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server
的解决方法:
1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
1.mysql -u root -pvmware
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2. 授权法。例如,你想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;
3.在window自带的防火墙里的例外添加3306端口
mysql -u root -p
mysql>use mysql;
mysql>select 'host' from user where user='root';
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;
mysql>select 'host'from user where user='root';
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。首先看报错窗口。
经查阅,错误原因是:本地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。
现在再次用navicat for mysql访问远程mysql数据库,已经能正常打开了。
问题解决。
不过还有一个问题,发现双击打开某张表的时候很慢,至少要3秒。
当远程访问mysql时, mysql会解析域名, 所以会导致访问速度很慢, 会有2,3秒延时!
解决办法:
修改mysql安装目录下的my.ini,加上下面这个配置可解决此问题。在[mysqld]下加入:skip-name-resolve
保存退出后重启mysql服务。
然后访问速度就和本地一样快啦。
如何开启MySQL远程访问权限 允许远程连接
新安装的MySQL是默认不开户远程访问权限的,也就不能外部连接MySQL。这样对想远程调用MySQL的数据很不方便。下面我们来看下如何设置允许远程连接MySQL数据库。
登录MySQL
# mysql -uroot -p
如果无法登录可以使用find / -name mysql搜索mysql程序的路径,比如mysql程序路径为:/usr/local/mysql/bin/mysql,我们可以这样登录:
# /usr/local/mysql/bin/mysql -uroot -p
执行如下命令:
# grant all privileges on *.* to ‘root’@’192.168.0.1′ identified by ‘ROOT-PASSWORD’;
# flush privileges;
# exit
192.168.0.1是连接mysql服务器的客户端ip,如果指定所有,则用%来表示。本文提供了三种解决方法: 1、改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" mysql -u root -pvmwaremysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host, user from user; 2、授权法。 grant all privileges on *.* to 'myuser'@'%'identified by 'mypassword' wi th grant option; 如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码 grant all privileges on *.* to 'myuser'@'192.168.1.3'identified by 'mypassword' with grant option; 我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>flush rivileges 使修改生效,就可以了 另外一种方法: 在安装mysql的机器上运行: 1、d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入mysql服务器 2、mysql>grant all privileges on *.* to 'root'@'%'with grant option //赋予任何主机访问数据的权限 3、mysql>flush privileges //修改生效 4、mysql>exit //退出mysql服务器 这样就可以在其它任何的主机上以root身份登录啦。

标签:xxx,host,user,mysql,权限,root,远程,localhost
From: https://blog.51cto.com/yetaotao/5800708

相关文章

  • mysql执行计划的type
    如何理解MySQL的执行计划mysql中有一个叫event的东西,你可以查一下文档,可以设置定时更新,执行一个过程的sql。mysql中执行计划里type为index就需要优化吗mysql是一种sql关系......
  • mysql性能分析工具
    mysql如何分析查询性能如何提高MySQLLimit查询的性能?在MySQL数据库操作中,我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描......
  • nginx没有权限
    nginx.conf配置的root目录要什么权限你可以修改nginx配置里的root,比如下面的代码路径是到/data/www读取:server{listen80;server_nametest.abc.com;root/data/www;indexindex......
  • mysql面试题
    拼接table_1:1a,b,c2a,btable_2:a北京b上海c南京输出1北京,上海,南京CREATETABLE`table_1`(`id`intDEFAULTNULL,`daihao`varchar(100)DEFAU......
  • 查看mysql binlog日志(转)
    1.使用showbinlogeventsa.获取binlog文件列表mysql>showbinarylogs;+------------------+-----------+|Log_name|File_size|+------------------......
  • Apache SSI 远程命令执行漏洞
    ApacheSSI远程命令执行漏洞ssi简介SSI(服务器端包含)是放置在HTML页面中的指令,并在服务页面时在服务器上对其进行评估。它们使您可以将动态生成的内容添加到现有的HTML页......
  • Mysql 行号+分组行号+取Top记录 SQL
    Mysql行号+分组行号+取Top记录SQLselect*from(SELECT(@rowNum:=@rowNum+1)asrowNum--全量行号......
  • intellij IDEA+JAVA 做一个登陆界面,用到了mysql数据库
      今天打算学习一下IDEA+JAVA的框架搞点事情。网上发现个例子。发现有很多BUG。因为用到了mysql。还需要去装SQL安装包。以前有点经验。所以就弄了一下。首先下载MYSQL......
  • mysql视图/存储过程
    一.视图相关操作--注:对于单表查询的视图可以进行删除修改操作,多表查询的无法进行删除修改操作。一般视图多数用来做查询,不建议修改。--1.创建视图,语法格式CREATE......
  • mysqltext最大长度
    mysql数据库中text类型不设置大小默认大小事多少TINYBLOBTINYTEXT一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。MEDIUMBL......