目录

1、创建数据库

2、MySQL添加用户、删除用户、更改密码及授权

2.1、添加用户

2.2、删除用户

2.3、更改密码

2.4、授权

2.5、查看用户权限

3、拓展学习

3.1、MySQL数据库如何定义账号

3.2、MySQL常见用户权限

3.3、查看当前数据库所有用户权限

3.4、回收权限

3.5、查看用户权限

3.6、删除用户

3.7、修改密码

3.8、重置root密码

3.9、如何保证数据库账号安全?

mysql.user表字段解析


MySQL安装启动成功后,首先我们需要创建数据库,然后创建一个用户去操作这个数据库。

1、创建数据库

// 登录MySQL客户端:mysql -h [ip] -u[username] -p[password]
C:\Users\Administrator>mysql -h 127.0.0.1 -uroot -p"root"
// 创建数据库,指定字符集
mysql> CREATE DATABASE `apollodb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
// 查看数据库是否创建成功
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| apollodb           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)//如果库名写错了,当然如果库名创建错了,也可以使用命令进行删除,然后重新创建:
mysql> drop database apollodb;

2、MySQL添加用户、删除用户、更改密码及授权

2.1、添加用户

跟以往版本不同,MySQL5.7 mysql.user表没有password字段,这个字段改成了 authentication_string;

这里我们使用命令进行创建用户:

// 创建了一个名为:dev001 密码为:123456 的用户
mysql> create user 'dev001'@'localhost' identified by '123456';
// 注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。
// 如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。
// 也可以指定某台机器ip可以远程登录。
// ##### 实际开发用“%”方式 #####
mysql> create user 'dev001'@'%' identified by '123456';
  • username:你将创建的用户名。
  • host:指定该用户在哪个主机上可以登陆,此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录。
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。

2.2、删除用户

// 删除用户“dev001”
mysql> drop user dev001@localhost ;
// 若创建的用户允许任何电脑登陆,删除用户如下
mysql> drop user dev001@'%';

2.3、更改密码

// 方法1,密码实时更新;修改用户“dev001”的密码为“1qaz@WSX”
mysql> set password for dev001=password('1qaz@WSX');// 方法2,需要刷新;修改用户“dev001”的密码为“1qaz@WSX”
mysql> update mysql.user set password=password('1qaz@WSX') where user='dev001'
// 刷新权限
mysql> flush privileges;

2.4、授权

// 策略一:授予用户kvstore通过外网IP对数据库“apollodb”的全部权限
mysql> grant all privileges on apollodb.* to 'dev001'@'%' identified by '1qaz@WSX';
// 刷新权限
mysql> flush privileges;// 策略二:授予用户“dev001”通过外网IP对于该数据库“apollodb”中表的创建、修改、删除权限,以及表数据的增删查改权限
mysql> grant create,alter,drop,select,insert,update,delete on apollodb.* to dev001@'%';
// 刷新权限
mysql> flush privileges;// 策略三:授权dev001用户拥有所有数据库的某些权限
mysql> grant select,delete,update,create,drop on *.* to dev001@'%' identified by '1qaz@WSX';
// 刷新权限
mysql> flush privileges;

privileges:用户的操作权限,如select,delete,update,create,drop等;如果要授予所有的权限可使用all;% 表示对所有非本地主机授权,不包括localhost。

2.5、查看用户权限

// 查看用户“dev001”
mysql> show grants for dev001;
+------------------------------------------------------+
| Grants for dev001@%                                  |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dev001'@'%'                   |
| GRANT ALL PRIVILEGES ON `apollodb`.* TO 'dev001'@'%' |
+------------------------------------------------------+
2 rows in set (0.00 sec)// MySQL通过权限表来控制用户对数据库的访问,权限表放在mysql数据库中,常见的有user表。
mysql> use mysql;
Database changed
// 查看用户权限
mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| dev001        | %         |
| dev001        | localhost |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
5 rows in set (0.02 sec)mysql>

注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:flush privileges;

最后用MySQL的dev001用户登录查看是否有对apollodb数据库的操作权限:

C:\Users\Administrator>mysql -h 192.168.0.200 -udev001 -p"1qaz@WSX"
mysql> mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| apollodb           |
+--------------------+
2 rows in set (0.00 sec)mysql> show grants for dev001;
+------------------------------------------------------+
| Grants for dev001@%                                  |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dev001'@'%'                   |
| GRANT ALL PRIVILEGES ON `apollodb`.* TO 'dev001'@'%' |
+------------------------------------------------------+
2 rows in set (0.00 sec)

3、拓展学习

3.1、MySQL数据库如何定义账号

用户名@可访问控制列表

如文章开头的数据表查询,解析如下:

  • (root, localhost) 表示只可以在部署mysql的服务器上登录;

  • (root, 192.168.1.%) 表示可以在192.168.1网段登录MySQL;

  • (root, %) 表示可以从除了本地外的所有外部主机登录,即允许远程登录;

  • (root, sla01) 表示主机名为sla01可以登陆(可以在/etc/hostname查看sla01代表哪台服务器。

3.2、MySQL常见用户权限

分类 语句 说明
管理员 create user 建立新用户的权限
grant option 为其它用户授权的权限
super 管理服务器的权限
DDL create 新建数据库,表的权限
alter 修改表结构的权限
drop 删除数据库,表的权限
index 建立删除索引的权限
DML select 查询表数据的权限
insert 表中插入数据的权限
update 更新表中数据的权限
delete 删除表中数据的权限
execute 执行存储过程的权限

3.3、查看当前数据库所有用户权限

mysql> show privileges;
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Privilege               | Context                               | Comment                                               |
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Alter                   | Tables                                | To alter the table                                    |
| Alter routine           | Functions,Procedures                  | To alter or drop stored functions/procedures          |
| Create                  | Databases,Tables,Indexes              | To create new databases and tables                    |
| Create routine          | Databases                             | To use CREATE FUNCTION/PROCEDURE                      |
| Create temporary tables | Databases                             | To use CREATE TEMPORARY TABLE                         |
| Create view             | Tables                                | To create new views                                   |
| Create user             | Server Admin                          | To create new users                                   |
| Delete                  | Tables                                | To delete existing rows                               |
| Drop                    | Databases,Tables                      | To drop databases, tables, and views                  |
| Event                   | Server Admin                          | To create, alter, drop and execute events             |
| Execute                 | Functions,Procedures                  | To execute stored routines                            |
| File                    | File access on server                 | To read and write files on the server                 |
| Grant option            | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess   |
| Index                   | Tables                                | To create or drop indexes                             |
| Insert                  | Tables                                | To insert data into tables                            |
| Lock tables             | Databases                             | To use LOCK TABLES (together with SELECT privilege)   |
| Process                 | Server Admin                          | To view the plain text of currently executing queries |
| Proxy                   | Server Admin                          | To make proxy user possible                           |
| References              | Databases,Tables                      | To have references on tables                          |
| Reload                  | Server Admin                          | To reload or refresh tables, logs and privileges      |
| Replication client      | Server Admin                          | To ask where the slave or master servers are          |
| Replication slave       | Server Admin                          | To read binary log events from the master             |
| Select                  | Tables                                | To retrieve rows from table                           |
| Show databases          | Server Admin                          | To see all databases with SHOW DATABASES              |
| Show view               | Tables                                | To see views with SHOW CREATE VIEW                    |
| Shutdown                | Server Admin                          | To shut down the server                               |
| Super                   | Server Admin                          | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
| Trigger                 | Tables                                | To use triggers                                       |
| Create tablespace       | Server Admin                          | To create/alter/drop tablespaces                      |
| Update                  | Tables                                | To update existing rows                               |
| Usage                   | Server Admin                          | No privileges - allow connect only                    |
+-------------------------+---------------------------------------+-------------------------------------------------------+
31 rows in set (0.00 sec)

3.4、回收权限

命令:

revoke [insert,delete,update,select ...] on Databasename.Tablename from 'username'@'ip';

3.5、查看用户权限

命令:

show grants for 'username'@'ip';

3.6、删除用户

drop user 'username'@'ip';

3.7、修改密码

update mysql.user set authentication_string=password('password') where user='root' and host = 'localhost';
flush privileges;
# 新设置用户或更改密码后需用flush

3.8、重置root密码

  1. 修改MySQL的配置文件(my.ini),在[mysqld]下添加一行skip-grant-tables,重启MYSQL后就不需要密码了。

  2. 重启后,mysql -u root -p登入数据库

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

  4. flush privileges;

  5. 删除skip-grant-tables这一行,重新启动 MySQL。

3.9、如何保证数据库账号安全?

  1. 最小权限原则;

  2. 复杂密码强度策略;

  3. 密码过期和限制重用原则;

mysql.user表字段解析

字段名称 说明
权限列
Host 主机名,值为%时表示允许非本地的其它所有机器登录
User 用户名
Select_priv 确定用户是否有权限使用select命令查询数据
Insert_priv 确定用户是否有权限使用insert命令插入数据
Update_priv 确定用户是否有权限使用update命令更新数据
Delete_priv 确定用户是否有权限使用DELETE命令删除数据
Create_priv 确定用户是否有权限使用create命令创建数据库和表
Drop_priv 确定用户是否有权限使用drop命令删除数据库和表
Reload_priv 确定用户是否有权限执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表重新加载权限表
Shutdown_priv 确定用户是否有权限关闭MySQL服务器在将此权限提供给root账户之外的任何用户时
Process_priv 确定用户是否有权限通过SHOW PROCESSLIST命令查看其他用户的进程 
File_priv 确定用户是有权限执行SELECT INTO OUTFILE和LOAD DATA INFILE命令
Grant_priv  
References_priv  
Index_priv  
Alter_priv  
Show_db_priv  
Super_priv  
Create_tmp_table_priv  
Lock_tables_priv  
Execute_priv  
Repl_slave_priv  
Repl_client_priv  
Create_view_priv  
Show_view_priv  
Create_routine_priv  
Alter_routine_priv  
Create_user_priv  
Event_priv  
Trigger_priv  
Create_tablespace_priv  
安全列
ssl_type 支持ssl标准加密安全字段
ssl_cipher 支持ssl标准加密安全字段
x509_issuer 支持x509标准字段
x509_subject 支持x509标准字段
password_expired 密码是否过期。Y:说明该用户密码已过期 N:没有过期
password_last_changed  
password_lifetime  
plugin 5.5.7开始,mysql引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户
authentication_string 通过authentication_string可以控制两者的映射关系,(PAM plugin等,PAM可以支持多个服务名)
   
资源控制列
max_questions 每小时允许执行多少次查询:0表示无限制
max_updates 每小时可以执行多少次更新:0表示无限制
max_connections 每小时可以建立的多少次连接:0表示无限制
max_user_connections 单用户可以同时具有的连接数:0表示无限制
account_lock

MySQL5.7创建数据库与添加用户、删除用户及授权、保证数据库账号安全相关推荐

  1. Ubuntu 答疑:Ubuntu 添加和删除用户具体步骤及进程被占用的解决方式

    文章目录 前言 一.添加用户 1.1.创建用户 1.2.设置密码 1.3.赋予用户管理员权限 二.删除用户 三.可能报的错误 3.1.进程被占用 3.2.进程被占用的解决方式 总结 前言 我们使用 U ...

  2. linux删除相同用户,Linux 批量添加和删除用户

    Linux批量添加和删除用户 一,工具作用Linux批量添加和删除用户 在Linux用户管理中,经常需要用到批量添加或删除用户:如果用 useradd或adduser来添加大量用户,对系统管理员的体力 ...

  3. CentOS添加和删除用户以及用户组的方法

    本篇文章主要介绍了CentOS添加和删除用户以及用户组的方法,具有一定的参考价值,有兴趣的可以了解一下 1.Linux环境下的账户系统文件主要在/etc/passwd, /etc/shadow,/et ...

  4. linux7如何删除用户,如何在CentOS 7上添加和删除用户

    CentOS以及所有其他Linux发行版都是多用户操作系统.每个用户对于各种命令行和GUI应用程序可以具有不同的权限级别和特定设置. 知道如何添加和删除用户是每个Linux用户应了解的最基本技能之一. ...

  5. 在CentOS 8上添加和删除用户

    Linux添加用户和删除用户是linux运维的基础技能之一,本篇文章讲述了如何使用useradd和userdel在Centos8上添加和删除用户.以及如何添加具有管理权限的用户. 设置新的Linux服 ...

  6. Ubuntu Desktop Server - 添加用户 / 删除用户和添加 sudo 权限

    Ubuntu Desktop Server - 添加用户 / 删除用户和添加 sudo 权限 1. 添加新用户 yongqiang Ubuntu users can add a new user us ...

  7. linux添加删除用户命令,Linux命令之useradd和userdel(添加、删除用户)

    一.[useradd]:添加用户命令 1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s sh ...

  8. 计算机新建用户如何删除,win10系统如何添加和删除用户?windows10删除用户教程...

    有位 windows10正式版 用户反映自己因为刚刚升级系统,所以对系统中的很多操作都很陌生.尤其是对win10系统中添加和删除用户该如何操作表示很是不解.这该怎么办呢?接下来,小编就向大家分享win ...

  9. CentOS添加和删除用户

    在CentOS下添加和删除用户命令: 添加用户 test: adduser test 修改test密码: passwd test 删除用户test: userdel test 删除用户以及用户目录: ...

  10. Linux添加、删除用户和用户组

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数. 1.建用户: adduser phpq //新建phpq用户 passwd phpq //给phpq用户设置密码 2.建工作组 g ...

最新文章

  1. 短视频个性化Push工程精进之路
  2. R构建朴素贝叶斯分类器(Naive Bayes Classifier)
  3. Notice: Undefined variable解决办法
  4. Future 和 ExecutorCompletionService 对比和使用
  5. 华为鸿蒙手机和电视通话,鸿蒙智慧屏首秀:逾10万人预定,电视视频通话功能强大...
  6. 暴风影音彻底凉凉!土豆、乐视、pps、风行曾经也辉煌过
  7. Autolayout的简单介绍和示例代码
  8. lodop直接打印怎么去除水印_手机视频有水印怎么办?一招教你轻松去除,不学真是可惜了...
  9. C语言实现matlab的interp2()函数
  10. 好IT男不能“淫”-谈IT人员目前普遍存在的“A情绪”
  11. 博弈论笔记:重复博弈
  12. 系统好看 字体font-family
  13. java程序读取文件_java,编写一个程序,可以读取文件数据
  14. jiathis jia.js Eval 解密 解密出来的代码
  15. 一点Unity3D学习经验分享
  16. OpenCV利用鼠标操作测量角度
  17. 潍坊学院java比赛_潍坊学院在山东省第六届“超星杯”高校教师教学比赛中再获佳绩...
  18. 使用xmake配合arm-none-eabi-gcc构建stm32工程
  19. java毕业设计宠物之家Mybatis+系统+数据库+调试部署
  20. 如何轻松恢复Windows 10/8/7中覆盖的文件

热门文章

  1. 移动设备如何当作FL Studio中的MIDI控制器(下)
  2. 使用python实现arp欺骗
  3. MySQL学习笔记(一)基本查询操作
  4. 【FPGA教程案例31】通信案例1——基于FPGA的ASK调制信号产生
  5. 用友U8案例教程财务报表
  6. 大数据平台、从数仓 到 数据中台
  7. C语言数据结构、十字链表的分析及实现
  8. 避免sql注入的方法
  9. 3500份课后答案,很值得收藏,这里只介绍了一部分。
  10. Word转换pdf文件之好用的pdf虚拟打印机