您的位置:新葡亰496net > 网络数据库 > MySQL用户权限验证与治本章程详解,5重新恢复设

MySQL用户权限验证与治本章程详解,5重新恢复设

发布时间:2019-06-21 13:04编辑:网络数据库浏览(93)

    问题描述:

    前言

    Centos6.5重置mysql密码并设置允许远程连接

    root密码忘记,重置mysql的root密码:

    一、修改mysql的配置文件my.cnf

    1.在[mysqld]的段中加上一句:skip-grant-tables

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    skip-name-resolve
    skip-grant-tables
    保存并且退出vi。

    (或执行 mysqld_safe --skip-grant-tables &)

    2.重新启动mysqld
    # /etc/init.d/mysqld restart
    Stopping MySQL: [ OK ]
    Starting MySQL: [ OK ]

    3.登录并修改MySQL的root密码
    # /usr/bin/mysql
    Welcome to the MySQL monitor. Commands end with ; or g.
    Your MySQL connection id is 3 to server version: 3.23.56
    Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

    mysql> use mysql ;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 2 Changed: 0 Warnings: 0

    mysql> flush privileges ;
    Query OK, 0 rows affected (0.01 sec)

    mysql> quit
    Bye
    4.将MySQL的登录设置修改回来
    # vi /etc/my.cnf
    将刚才在[mysqld]的段中加上的skip-grant-tables删除
    保存并且退出vi。

    5.重新启动mysqld
    # /etc/init.d/mysqld restart
    Stopping MySQL: [ OK ]
    Starting MySQL: [ OK ]

    二、

    停止mysql服务

    /etc/init.d/mysqld stop

    sudo mysqld_safe --skip-grant-table&

    mysql

    use mysql;

    update user set password = password('yourpasswd') where user = 'root';

    flush privileges;

    重启下mysql服务即可重新用新密码登录

    /etc/init.d/mysqld restart

    允许远程连接mysql

    通过navicat连接MySQL的时候发生的这个错误
    ERROR 1130: Host ***.***.***.*** is not allowed to connect to this MySQL server
    说明所连接的用户帐号没有远程连接的权限,只能在本机(localhost)登录。
    需更改 MySQL 数据库里的 user表里的 host项
    把localhost改称%

    一、

    登陆到MySQL ,首先 use MySQL;
    按照别人提供的方式update的时候,出现错误。
    MySQL> update user set host='%' where user = 'root';
    ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
    然后查看了下数据库的host信息如下:
    MySQL> select host from user where user = 'root';
    -----------------------
    | host |
    -----------------------
    | % |
    | 127.0.0.1 |
    | localhost.localdomain |
    -----------------------
    3 rows in set (0.00 sec)
    host已经有了%这个值,所以直接运行命令:

    MySQL>flush privileges;

    二、

    mysql> grant all privileges on *.* to 'root'@'%' withgrant option;

    Query OK, 0 rows affected (0.02 sec)

    mysql> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

    mysql> selectuser.host from user;

    ----------- --------------

    | user| host|

    ----------- --------------

    | root| %|

    | root| 127.0.0.1|

    | repl_user | 192.168.1.52 |

    ----------- --------------

    3 rows in set (0.00 sec)

    允许指定IP访问mysql

    mysql> grant all privileges on *.* to'root'@***.***.***.****identifiedby '123456';
    QueryOK, 0 rows affected (0.00 sec)

    root密码忘记,重置mysql的root密码: 一、修改mysql的配置文件my.cnf 1.在[mysqld]的段中加上一句:ski...

    本文实例讲述了MySQL用户权限验证与管理方法。分享给大家供大家参考,具体如下:

    1、登陆MySQL:
    mysql -u root -p 
    password:输入密码
    2、查看用户信息
    select user,host,password from mysql.user;
    select user,host from mysql.user;
    3、设置密码
    set password for root@localhost=password('在这里填入root密码');
    4、修改密码
    方法1:mysqladmin -u root -p password newpassword
    方法2: #mysql -u root -p mysql
                   mysql>UPDATE user SET password=PASSWORD("new") WHERE user='root'; 
                   mysql>flush privileges;
    5、删除匿名用户
    delete from mysql.user where user='';
    6、查看系统已存在的数据库
    show databases;
    7、删除名为test的空数据库
    drop database test;
    8、建立mysql用户
    例a:建立对test数据库有完全操作权限的名为centospub的用户
    mysql>grant all privileges on test.* to centospub@localhost  identified by 'password';
    例b:增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
    mysql>grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
    但例b增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了。
    例c:增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
    mysql>grant select,insert,update,delete on mydb.* to test2@localhost  identified by "abc";
    9、查找确认centospub用户的存在与否
    select user from mysql.user where user='centospub';
    10、 建立名为test的数据库
    create database test;
    11、取消centospub用户对数据库的操作权限
    revoke all privileges on *.* from centospub@localhost ;
    12、删除centospub用户
    delete from mysql.user where user='centospub' and host='localhost';
    13、刷新,使所做的改动生效 
    flush privileges;
    14、忘记MySQL的root密码,怎么修改

    新葡亰496net 1

    众所周知在默认情况下,我们安在阿里云上的mysql是不支持远程连接的,但是我们还需要通过一些工具来连接mysql,如navicat,这时就需要我们来修改mysql的远程连接了。

    一、Mysql权限分两阶段验证

    如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。
    启动 MySQL :PATH_TO_MYSQL/bin/mysqld --skip-grant-tables &
    就可以不需要密码就进入 MySQL 了。
    然后就是
    mysql>use mysql
    mysql>update user set password=password("new_pass") where user="root";
    mysql>flush privileges;
    重新杀 MySQL ,用正常方法启动 MySQL
    一定注意:很多新手没有用password=password("..."),而是直接password="..."所以改掉密码不好使

     ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to this MySQL server

    注意一点:当我们修改完mysql权限相关的操作后一定要刷新权限表,使配置生效,执行

    1. 服务器检查是否允许连接:用户名、密码,主机地址。

    2. 检查每一个请求是否有权限实施。

    [补充]

    首先网上的问题大部分是远程登陆MySQL,用户Ip没有权限,用本机登陆增加权限。但是我的就是本地都进不去。。。

    flush privileges (主要)

    二、Mysql权限列表

    15.mysql 远程访问

    安装的是官网的mysql免安装版  

    环境前提:centos7 mysql5.7

    权限 权限级别 权限说明
    create 数据库、表或索引 创建数据库、表或索引权限
    drop 数据库或表 删除数据库或表权限
    grant option 数据库、表或保存的程序 赋予权限选项
    references 数据库或表 外键权限
    alter 更改表,比如添加字段、索引、修改字段等
    delete 删除数据权限
    index 索引权限
    insert 插入权限
    select 查询权限
    update 更新权限
    create view 视图 创建视图权限
    show view 视图 查看视图权限
    alter routine 存储过程 更改存储过程权限
    create routine 存储过程 创建存储过程权限
    execute 存储过程 执行存储过程权限
    file 服务器主机上的文件访问 文件访问权限
    create temporary tables 服务器管理 创建临时表权限
    lock tables 服务器管理 锁表权限
    create user 服务器管理 创建用户权限
    proccess 服务器管理 查看进程权限
    reload 服务器管理 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限
    replication client 服务器管理 复制权限
    replication slave 服务器管理 复制权限
    show databases 服务器管理 查看数据库权限
    shutdown 服务器管理 关闭数据库权限
    super 服务器管理 执行kill线程权限

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

    安装mysql的艰辛历程:

    1、首先登录位于阿里云上的mysql:

    三、Mysql用户权限管理操作

     

    (1)免安装版,

    mysql -u root -h localhost -p

    1. 权限查询:

    **、修改之后,一定要刷新,使所做的改动生效 
    flush privileges;

    免安装版要领两个,配置环境变量,配置my.ini,然后在dos系统中

    **2、打开mysql数据库 ** (需要有能操作mysql这个库的权限,一般是mysql的root用户)

    (1)查看mysql的所有用户及其权限:

     

    mysqld --install

    use mysql

    select * from mysql.userG;
    

     

    输入 mysqld --initialize-insecure --user=mysql; 初始化数据文件

    3、这时我们有两种方式来进行修改:

    (格式化显示)

     

    然后再次启动mysql 然后用命令 mysql –u root –p 进入mysql管理界面(密码可为空)

    第一种:是直接将原来的 user='root' and host='localhost'记录的host修改成%或指定的ip

    (2)查看当前mysql用户权限:

     

    修改密码:update mysql.user set authentication_string=password('123456789') where user='root' and Host = 'localhost';

    1)将host设置为%表示任何ip都能连接mysql

    show grants;
    

    刷新权限:flush privileges;

    update user set host='%' where user='root' and host='localhost'

    (3)查看某个用户的权限:

    查看服务是否启动:net start mysql

    1. 当然也可以将host指定为某个ip
    show grants for 用户名@主机;
    

    (2)安装可执行程序版,  

    update user set host='106.39.178.131' where user='root' and host='localhost'

    示例:

    可执行程序版本一直点下一步即可,会有一个海豚一样的服务界面

    1. 执行完以上语句,接着执行以下语句 ,刷新权限表,使配置生效
    show grants for root@localhost;
    

     修改密码可直接通过navicat连接到mysql后,用查询命令进行修改

    flush privileges

    2. Mysql用户创建:

    1、服务是否开启

    第二种: 是新增一条记录方式

    方法一:使用create user命令创建。

    我的电脑,右击->管理->服务,找到Mysql,选择本地系统

    1)新增一个用户newname(这个新增的用户名称也可以为root)密码为并将host设置为%表示任何ip都能连接mysql

    create user '用户名'@'主机' identified by '密码';
    

    新葡亰496net 2

    grant all on . to 'newname'@'%' identified by 'Navicat_123'

    示例:

    2、修改主机名

    2)新增一个用户newname,密码为并将host设置为指定的ip 表示 只有该ip能连接mysql

    create user 'wjt'@'localhost' identified by 'wujuntian';
    

    我的电脑,右击->管理->服务,找到Mysql,重启一下。 
    若1不行,在navicat的连接属性中将里面的主机名或者IP修改为127.0.0.1。

    grant all on . to 'newname'@'106.39.178.131' identified by 'Navicat_123'

    方法二:直接向数据表mysql.user中插入一条用户记录。

    3、免密登陆

    1. 执行完以上语句,接着执行以下语句 ,刷新权限表,使配置生效

    示例:

    flush privileges

    MySQL用户权限验证与治本章程详解,5重新恢复设置mysql密码并安装允许远程连接。复制代码 代码如下:

    使用这个方法是通过免密码登陆,每用一次MySQL都需要重复操作一次

    当然如果想再改成本地的连接,只需要将对应用户的host改成localhost即可,

    insert into mysql.user set user='wujuntian',host='localhost',password=password('123123');

    新葡亰496net 3

    update user set host='localhost' where user='root' and host='106.39.178.131'

    注意:

    后续:免密登陆后,可以通过添加mysql的root用户

    4、不要现在就去navicat进行连接,还需要做两件事,要不你就到坑里了

    使用方法二一定要记得要执行flush privileges刷新权限。其次,mysql5.7以后,mysql.user表的password字段已被authentication_string代替,所以应将“password”改为“authentication_string”,密码一定要使用password函数加密。

    后来网友提示,才知道原因:

     1)检查服务器防火墙3306端口开放了吗,没开放需要去开放
    
     2)检查一下阿里云的安全组规则中是否开放了3306端口,
    

    3. Mysql用户删除:

    新葡亰496net,在安装了mysql的数据库中,不要非法关机,强制断电,不然会出现这样的问题。

    如何检查及配置参考文档:https://help.aliyun.com/document_detail/25471.html?spm=5176.100241.0.0.IneJPl

    drop user '用户名'@'主机';
    

    本地出现了Error 1130,那远程连接也一定会出现该问题,解决了本地连接问题,却不一定解决远程连接出现Error 1130问题。

    5、现在是时候进行远程连接啦,在工具里输入相应的参数

    4. Mysql用户权限授予:

    4、修改密码(mysql 5.7.23)

    host: 阿里云服务器的ip

    刚创建的用户默认是没有权限的,需要使用grant指令进行权限的授予。

    (1)进入mysql ,首先进行连接权限数据库:use mysql

    port:3306

    grant指令完整格式:

    (2)改密码:update user set authentication_string=password('123') where user='root';

    user name : 如果是第一种方式的修改,用户就是root,第二种修改就是你自己设置的名字,例如我的就是newname

    grant 权限列表 on 数据库名.数据表名 to '用户名'@'主机' identified by '密码' with grant option;

    (3)刷新权限:flush privileges;

    password: 如果是第一种方式的修改,密码就是root的密码,第二种修改就是你自己设置的密码,例如我的就是Navicat_123

    示例:

    如果navicat不能连接到本地mysql服务,那么运用命令提示符进入到mysql 的bin目录下,更新一下密码一般就可以了

    至此,连上去那一刻,有木有很激动啊。

    grant all privileges on *.* to 'wjt'@'localhost' identified by "wujuntian" with grant option;
    

    mysqladmin -uroot -p123 password 12345

    总结

    可使用“*”表示所有数据库或所有数据表,“%”表示任何主机地址。

    5、远程连接mysql服务器报错

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    可以使用grant重复给用户添加权限,进行权限叠加。

    (1)10065

    with grant option:这个选项表示该用户可以将自己拥有的权限授权给别人。

    新葡亰496net 4

    记得授权后一定要刷新权限:

    10065报错是因为根本没有拼通对方的ip

    flush privileges;
    

    (2)10060

    5. Mysql用户权限回收:

    问题产生的原因主要有:mysql服务没有启动;双方电脑的防火墙没有关闭,特别注意,要两台电脑的防火墙都关闭;

    revoke指令格式:

    发生这些问题的第一时间首先是重启服务

    revoke 权限列表 on 数据库名.数据表名 from 用户名@主机;

    新葡亰496net 5

    示例:

     

    revoke select on test.user from wjt@localhost;
    

    1、grant all privileges on *.* to 'root'@'%' identified by 'youpassword' with grant option; flush privileges;

    注意:

    2、grant all on db.* to user@'IP' identified by 'pwd';

    其实GRANT语句在执行的时候,如果权限表中不存在目标账号,则创建账号;如果已经存在,则执行权限的新增。

    除了在cmd的dos环境下进行操作,还可以用root登陆navicat可视化界面进行查询操作

    usage权限不能被回收,也就是说,REVOKE用户权限并不能删除用户。

    6. 对账户重命名:

    rename user '旧用户名'@'旧主机' to '新用户名'@'新主机';

    示例:

    rename user 'wujuntian'@'localhost' to 'ajun'@'localhost';
    

    7. Mysql用户密码修改:

    方法一:使用set password命令。

    set password for '用户名'@'主机' = password('新密码');

    示例:

    set password for 'root'@'localhost' = password('123456');
    

    方法二:修改mysql.user表中的password(或authentication_string)字段。

    示例:

    复制代码 代码如下:

    update mysql.user set password=password('123123') where user='root' and host='localhost';

    注意:

    此方法一定要执行“flush privileges;”指令刷新权限,否则密码修改无法生效。Mysql5.7以后应将“password”改为“authentication_string”。

    方法三:使用grant指令在授权时修改密码:

    grant select on 数据库名.数据表名 to 用户名@主机 identified by '新密码' with grant option;

    示例:

    复制代码 代码如下:

    grant select on test.user to ajun@localhost identified by '111111' with grant option;

    方法四:运行mysqladmin脚本文件。

    该文件一般在mysql安装目录下的bin目录中。进入该目录,根据一下两种具体情况输入命令(只有root用户有这个权限)。

    (1)用户尚无密码:

    mysqladmin -u 用户名 password 新密码;

    (2)用户已有密码:

    mysqladmin -u 用户名 -p password 新密码;

    (回车后会提示输入旧密码,输入之后即可修改成功。)

    注意:

    更改密码时候一定要使用PASSWORD函数(mysqladmin 和GRANT 两种方式不用写,会自动加上)。

    8. 忘记密码登录mysql:

    方法一:

    先停止正在运行的Mysql服务,在命令行窗口进入mysql安装目录下的bin目录,在-skip-grant-tables参数下运行mysqld文件(Linux系统运行mysqld_safe文件更安全):

    mysqld --skip-grant-tables
    

    这样可以跳过Mysql的访问控制,在控制台以管理员的身份进入mysql数据库。另外再开启一个命令行窗口,进入mysql安装目录下的bin目录,直接输入:mysql,回车,即可登录mysql,然后就可以重新设置密码了(注意:此时“Mysql用户密码修改”中的四种方法只有第二种方法能使用!)。设置成功后退出,重启Mysql服务。

    方法二:修改mysql配置文件my.ini。

    其实原理和方法一一样,都是利用Mysql提供的--skip-grant-tables参数来跳过Mysql的访问控制。打开mysql配置文件my.ini,在'[mysqld]'下加入“skip-grant-tables”,保存,重启Mysql服务,然后就可以不需密码登录mysql进行密码修改了。

    Mysql中的“mysql”数据库存储着所有Mysql用户的权限信息数据表。当Mysql启动时,所有的权限表内容都被读进内存中,进行权限判断时直接使用内存中的内容进行判断。用grant、revoke或set password对权限表进行的修改会立即被服务器注意到,GRANT操作的本质就是修改权限表后进行权限的刷新。但是如果手工修改权限表,例如使用insert、update、delete等操作权限表的话,应该执行一个flush privileges命令,该命令会使服务器重新读取权限表内容到内存,从而使修改生效。如果不执行该命令,必须重启mysql服务才能生效。所以,最好使用grant、revoke或set password对权限表进操作,可以省去执行flush privileges命令的麻烦,而且如果忘了执行这个命令的话你会很抓狂。。。

    不仅如此,删除用户、重命名用户最好也分别使用drop user、rename user命令进行操作,而不要使用delete、update命令进行操作。前者不但会对mysql.user数据表进行操作,同时也会更新其他权限表的记录,而后者只会对mysql.user表的数据进行操作,这样会出现很多问题,因为用户的权限信息不仅仅存在于mysql.user表中。比如你使用delete删除了mysql.user表中的一个用户,但是没有操作其他权限数据表的话,那么其他权限数据表例如tables_priv中关于该用户的权限记录还存在着,下次如果想使用create user命令创建相同名称的用户会失败,只能使用insert into指令向mysql.user表中插入记录,或者先把其他权限数据表中与该用户名相关的记录删除。使用update命令重命名用户也会出现很大问题,重命名后用户失去了很多的权限,而其他权限表中关于原用户名的记录则成了没用的记录,除非你对每一个权限表都进行相同的更新操作,但这很麻烦。所以,使用drop user、rename user吧,一个命令就可以让系统自动帮你完成所有事情,何乐而不为呢!

    MySQL用户权限验证与治本章程详解,5重新恢复设置mysql密码并安装允许远程连接。Mysql权限检查:

    mysql 先检查对大范围是否有权限,如果没有再到小范围里去检查。比如:先检查对这个数据库是否有select权限,如果有,就允许执行。如果没有,再检查对表是否有select权限,一直到最细粒度,也没有权限,就拒绝执行。因此,粒度控制越细,权限校验的步骤越多,性能越差。

    更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

    希望本文所述对大家MySQL数据库计有所帮助。

    您可能感兴趣的文章:

    • MySQL创建用户与授权及撤销用户权限方法
    • MySQL用户权限管理详解
    • mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限
    • Windows下降权MYSQL和apche的运行级别(普通用户权限运行)
    • MySQL中导出用户权限设置的脚本分享
    • MySQL验证用户权限的方法
    • 在MySQL中增添新用户权限的方法
    • MySQL数据库下用户及用户权限配置
    • MySQL与Oracle 差异比较之七用户权限
    • MySQL 创建用户、授权用户、撤销用户权限、更改用户密码、删除用户(实用技巧)

    本文由新葡亰496net发布于网络数据库,转载请注明出处:MySQL用户权限验证与治本章程详解,5重新恢复设

    关键词: