CREATE DATABASE `apollodb` DEFAULT CHARACTER SET utf8 COLLATE _mysql5.7新建数据">
当前位置:   article > 正文

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

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、创建数据库

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

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

2.1、添加用户

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

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

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

2.2、删除用户

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

2.3、更改密码

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

2.4、授权

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

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

2.5、查看用户权限

  1. // 查看用户“dev001”
  2. mysql> show grants for dev001;
  3. +------------------------------------------------------+
  4. | Grants for dev001@% |
  5. +------------------------------------------------------+
  6. | GRANT USAGE ON *.* TO 'dev001'@'%' |
  7. | GRANT ALL PRIVILEGES ON `apollodb`.* TO 'dev001'@'%' |
  8. +------------------------------------------------------+
  9. 2 rows in set (0.00 sec)
  10. // MySQL通过权限表来控制用户对数据库的访问,权限表放在mysql数据库中,常见的有user表。
  11. mysql> use mysql;
  12. Database changed
  13. // 查看用户权限
  14. mysql> select user,host from user;
  15. +---------------+-----------+
  16. | user | host |
  17. +---------------+-----------+
  18. | dev001 | % |
  19. | dev001 | localhost |
  20. | mysql.session | localhost |
  21. | mysql.sys | localhost |
  22. | root | localhost |
  23. +---------------+-----------+
  24. 5 rows in set (0.02 sec)
  25. mysql>

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

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

  1. C:\Users\Administrator>mysql -h 192.168.0.200 -udev001 -p"1qaz@WSX"
  2. mysql> mysql> show databases;
  3. +--------------------+
  4. | Database |
  5. +--------------------+
  6. | information_schema |
  7. | apollodb |
  8. +--------------------+
  9. 2 rows in set (0.00 sec)
  10. mysql> show grants for dev001;
  11. +------------------------------------------------------+
  12. | Grants for dev001@% |
  13. +------------------------------------------------------+
  14. | GRANT USAGE ON *.* TO 'dev001'@'%' |
  15. | GRANT ALL PRIVILEGES ON `apollodb`.* TO 'dev001'@'%' |
  16. +------------------------------------------------------+
  17. 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、查看当前数据库所有用户权限

  1. mysql> show privileges;
  2. +-------------------------+---------------------------------------+-------------------------------------------------------+
  3. | Privilege | Context | Comment |
  4. +-------------------------+---------------------------------------+-------------------------------------------------------+
  5. | Alter | Tables | To alter the table |
  6. | Alter routine | Functions,Procedures | To alter or drop stored functions/procedures |
  7. | Create | Databases,Tables,Indexes | To create new databases and tables |
  8. | Create routine | Databases | To use CREATE FUNCTION/PROCEDURE |
  9. | Create temporary tables | Databases | To use CREATE TEMPORARY TABLE |
  10. | Create view | Tables | To create new views |
  11. | Create user | Server Admin | To create new users |
  12. | Delete | Tables | To delete existing rows |
  13. | Drop | Databases,Tables | To drop databases, tables, and views |
  14. | Event | Server Admin | To create, alter, drop and execute events |
  15. | Execute | Functions,Procedures | To execute stored routines |
  16. | File | File access on server | To read and write files on the server |
  17. | Grant option | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess |
  18. | Index | Tables | To create or drop indexes |
  19. | Insert | Tables | To insert data into tables |
  20. | Lock tables | Databases | To use LOCK TABLES (together with SELECT privilege) |
  21. | Process | Server Admin | To view the plain text of currently executing queries |
  22. | Proxy | Server Admin | To make proxy user possible |
  23. | References | Databases,Tables | To have references on tables |
  24. | Reload | Server Admin | To reload or refresh tables, logs and privileges |
  25. | Replication client | Server Admin | To ask where the slave or master servers are |
  26. | Replication slave | Server Admin | To read binary log events from the master |
  27. | Select | Tables | To retrieve rows from table |
  28. | Show databases | Server Admin | To see all databases with SHOW DATABASES |
  29. | Show view | Tables | To see views with SHOW CREATE VIEW |
  30. | Shutdown | Server Admin | To shut down the server |
  31. | Super | Server Admin | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc. |
  32. | Trigger | Tables | To use triggers |
  33. | Create tablespace | Server Admin | To create/alter/drop tablespaces |
  34. | Update | Tables | To update existing rows |
  35. | Usage | Server Admin | No privileges - allow connect only |
  36. +-------------------------+---------------------------------------+-------------------------------------------------------+
  37. 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、修改密码

  1. update mysql.user set authentication_string=password('password') where user='root' and host = 'localhost';
  2. flush privileges;
  3. # 新设置用户或更改密码后需用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

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/837066
推荐阅读
  

闽ICP备14008679号