博客
关于我
MySql用户以及权限的管理。
阅读量:791 次
发布时间:2023-02-13

本文共 2265 字,大约阅读时间需要 7 分钟。

1.创建用户

CREATE USER “USERNAME“@“%” IDENTIFIED BY “PASSWORD”;

   这样一个用户就新建完成了。

   CREATE USER ------创建用户后面跟上想要创建的用户名。

   @% ------%表示主机,如果是%表示任何主机都可,但是想限制IP那么就写IP。例如:我想让只想1.1.1.1这个能够访问数据库那么就这样

CREATE USER “USERNAME“@“1.1.1.1” IDENTIFIED BY “PASSWORD”;

 但是有个问题本萌新想问一下:就算我写的是%号,但是我用本机当做服务器的话,我新建的普通用户,还是无法登陆,除非我在user表中INSERT一条localhost进去才行,不知道这个是为什么啊?

2.给用户添加权限

  我们新建一个普通用户后,虽然有这个账户了,但是没有权限了访问不了数据库。所以我们需要给他分配权限。

grant all privileges on *.* to 'USERNAME'@'%' identified by '账户的密码’;

 all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。

 on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
 to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录
 identified by:指定用户的登录密码

对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。

mysql> flush privileges;

3.查看用户权限

  查询某用户有哪些权限。注意后面的主机的名的不同,它所具备的权限也不是不同的。

SHOW GRANTS FOR "USERNAME"@"%";

4.回收/删除用户的某些权限

revoke create on *.* from 'USERNAME@localhost';

 那么这条命令下去,该用户就不能创建任何数据库和表了。记得用第2项中的flush命令刷新一下权限。

5.删除用户

drop user 'USERNAME'@'%';

6.修改用户密码三种方法

6.1.更新mysql.user表
# mysql5.7之前     mysql> use mysql;     mysql> update user set password=password('123456') where user='root';  # mysql5.7之后     mysql> use mysql;     mysql> update user set authentication_string=password('123456') where user='root';     mysql> flush privileges;

 6.2.set password for ‘用户名'@'登录地址'=password(‘密码')

mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');

6.3.mysqladmin -u 用户名 -p旧的密码 password 新密码

 

$ mysqladmin -u root -p123456 password 1234abcd

 

注意我的提示符已经转变成shell了,注意-p后面是没有空格的。 

7.如果忘记了root密码,如何修改root的密码呢?且看下面

由于进行特殊模式进行登录,当前的一个shell会陷入黑洞中,所以建议多开一个ssh连接,用来做2、3步操作, 1.在操作系统中停止mysql服务进程  RHEL7以下:service mysqld stop  RHEL 7:systemctl stop mysql.service 2.使用下面命令跳过权限验证,也就不需要密码了。   mysqld_safe --skip-grant-tables 3.修改root密码   mysql> use mysql   Database changed   mysql> UPDATE user SET password=PASSWORD("Qwe123") WHERE user='root';   Query OK, 4 rows affected (0.01 sec)   Rows matched: 4 Changed: 4 Warnings: 0   mysql> flush privileges;   Query OK, 0 rows affected (0.00 sec)   最后干掉当前特殊模式下的mysql进程 重启一下服务,那么grant验证就又回来了。

 

如果错误恳请各位指出,谢谢!

相关链接: http://www.jb51.net/article/69761.htm   http://www.jb51.net/article/87979.htm

 

 

    

转载于:https://www.cnblogs.com/zzh10086130/p/6420906.html

你可能感兴趣的文章
Mysql百万级数据查询优化
查看>>
MySQL的 DDL和DML和DQL的基本语法
查看>>
mysql的 if else , case when then, IFNULL
查看>>
MySQL的10种常用数据类型
查看>>
MySQL的btree索引和hash索引的区别
查看>>
mysql的cast函数
查看>>
MySql的CRUD(增、删、改、查)操作
查看>>
MySQL的DATE_FORMAT()函数将Date转为字符串
查看>>
mysql的decimal与Java的BigDecimal用法
查看>>
MySql的Delete、Truncate、Drop分析
查看>>
MySQL的Geometry数据处理之WKB方案
查看>>
MySQL的Geometry数据处理之WKT方案
查看>>
mysql的grant用法
查看>>
Mysql的InnoDB引擎的表锁与行锁
查看>>
mysql的InnoDB引擎索引为什么使用B+Tree
查看>>
MySQL的InnoDB默认隔离级别为 Repeatable read(可重复读)为啥能解决幻读问题?
查看>>
MySQL的insert-on-duplicate语句详解
查看>>
mysql的logrotate脚本
查看>>
MySQL的my.cnf文件(解决5.7.18下没有my-default.cnf)
查看>>
MySQL的on duplicate key update 的使用
查看>>