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

目录

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管理服务器的权限
DDLcreate新建数据库,表的权限
alter修改表结构的权限
drop删除数据库,表的权限
index建立删除索引的权限
DMLselect查询表数据的权限
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 
plugin5.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

 

 

 

 

 

 

 

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值