Linux中,MySQL的用户管理

MySQL库中的表及其作用

user表

User表是MySQL中最重要的一个权限表,记录允许连接到服务器的帐号信息,里面的权限是全局级的。

db表和host表

db表和host表是MySQL数据中非常重要的权限表。db表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。host表中存储了某个主机对数据库的操作权限,配合db权限表对给定主机上数据库级操作权限做更细致地控制。

table_priv表和columns_priv表

tables_priv表是用来对表设置操作权限。

columns_prive表用来对表的某一列设置权限。

procs_priv表

procs_priv表可以对存储过程中存储函数设置操作权限

账户管理

登录和退出MySQL服务器

MySQL命令常见的参数以及登录和退出MySQL服务器的方法

使用root用户登录到本地mysql服务器的test库中

mysql -u root -ppwd123 -h localhost test

使用root用户登录到本地mysql服务器的test库中,执行一条查询语句

mysql -u root -p -h localhost test -e "DESC person;"

新建普通用户

使用create user或grant语句

例如:创建一个用户名为:zhangsan,密码是pwd123,主机名是localhost的用户。

create user 'zhangsan'@'localhost' identified by 'pwd123';

使用GRANT语句创建一个新的用户testUser,密码为testpwd。用户 testUser对所有的数据有查询和更新权限,并授于对所有数据表的SELECT和UPDATE权限

GRANT SELECT,UPDATE ON *.* TO 'testUser'@'localhost' IDENTIFIED BY 'testpwd'; /*创建账户并授予权限*/

SELECT Host,User,Select_priv,Update_priv, FROM mysql.user where user='testUser'; /*查看账户权限信息*/

删除普通用户

使用drop user语句

使用drop删除用户'zhangsan'

drop user 'zhangsan'@'localhost';

使用delete命令删除用户

delete from mysql.user where user='zhangsan' and host='localhost';

密码的修改

root用户修改自己的密码

1)mysqladmin -u root -p password "123456"

2)使用update命令,修改user表中的密码。

例:update user set password=password('root123') where user='root';

3)使用SET语句修改root用户的密码

SET PASSWORD=password("rootpwd3");

root用户修改普通用户密码

1、使用SET语句将testUser用户的密码修改为"newpwd"

SET PASSWORD FOR 'testUser'@'localhost'=password("newpwd");

2、使用UPDATE语句修改普通用户的密码

使用UPDATE语句将testUser用户的密码修改为"newpwd2":

UPDATE mysql.user set Password=PASSWORD("newpwd2")

WHERE User="testUser" and Host="localhost";

3)使用GRANT语句修改普通用户密码

【例13.13】使用GRANT语句将testUser用户的密码修改为"newpwd3":

GRANT USAGE ON *.* TO 'testUser'@'localhost' IDENTIFIED BY 'newpwd3';

普通用户修改密码

3)使用GRANT语句修改普通用户密码

普通用户登录MySQL服务器后,通过SET语句设置自己的密码。

SET PASSWORD = PASSWORD('newpassword');

root用户密码丢失的解决办法

(1)使用--skip-grant-tables选项启动MySQL服务

mysql start-mysqld --skip-grant-tables

(2)使用root用户登录和重新设置密码

mysql -u root

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

(3)加载权限表

flush privileges;

或者修改/etc/my.cnf配置文件,在里面添加skip-grant-tables

然后重复上面的方式,免密登录MySQL中,进行密码的修改。

权限管理

1:MySQL的各种权限

账户权限信息被存储在mysql数据库的user、db、host、tables_priv、columns_priv和procs_priv表中。在MySQL启动时,服务器将这些数据库表内容读入内存。

2:授权

授权就是为某个用户授于权限。合理的授权可以保证数据库的安全。MySQL中可以使用GRANT语句为用户授于权限。

使用GRANT语句创建一个新的用户grantUser,密码为"grantpwd"。用户grantUser对所有的数据有查询、插入权限,并授于GRANT权限。GRANT语句及其执行结果如下:

MySQL> GRANT SELECT,INSERT ON *.* TO 'grantUser'@'localhost' IDENTIFIED BY 'grantpwd' WITH GRANT OPTION;

Query OK, 0 rows affected (0.03 sec)

结果显示执行成功,使用SELECT语句查询用户testUser2的权限:

MySQL> SELECT Host,User,Select_priv,Insert_priv, Grant_priv FROM mysql.user where user='grantUser';

3.回收权限

收回权限就是取消已经赋于用户的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全性。MySQL中使用REVOKE语句取消用户的某些权限。

使用REVOKE语句取消用户testUser的更新权限。REVOKE语句及其执行结果如下:

MySQL> REVOKE UPDATE ON *.* FROM 'testUser'@'localhost';

Query OK, 0 rows affected (0.00 sec)

执行结果显示执行成功,使用SELECT语句查询用户test的权限:

MySQL> SELECT Host,User,Select_priv,Update_priv,Grant_priv FROM MySQL.user where user='testUser';

4:查看权限

SHOW GRANTS语句可以显示指定用户的权限信息,使用SHOW GRANT语句查看账户信息。

SHOW GRANTS FOR 'user'@'host' ;

使用SHOW GRANTS语句查询用户testUser的权限信息。SHOW GRANTS语句及其执行结果如下:

MySQL> SHOW GRANTS FOR 'testUser'@'localhost';

相关推荐
煎饼小狗5 分钟前
Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
数据库·redis·缓存
我言秋日胜春朝★8 分钟前
【Linux】进程地址空间
linux·运维·服务器
永乐春秋21 分钟前
WEB-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外
数据库·sql
C-cat.29 分钟前
Linux|环境变量
linux·运维·服务器
yunfanleo44 分钟前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
打鱼又晒网1 小时前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!1 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
糖豆豆今天也要努力鸭1 小时前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
烦躁的大鼻嘎1 小时前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
乐大师1 小时前
Deepin登录后提示“解锁登陆密钥环里的密码不匹配”
运维·服务器