1.初始化完成之后的用户:只有一个root用户,5.6及之前的版本是没有密码的,5.7会产生随机密码,在初始化时可以看到,在配置日志文件中也可以查看。
2.用户的权限管理步骤
1)检查用户的-hip和用户名是否被允许
2)查看mysql.user表是否存在该用户,这里没有权限设置,默认对所有的库都有权限
3)然后查看mysql.db表中该用户对某些库的权限
4)然后查看mysql.table_priv对于某个库的某张表的权限查看
5)然后查看mysql.columns_priv对某张表的某列的查看权限
查看命令: 例如查看user表描述,进入mysql ,语句: use mysql ; desc user;
查看user表中root的内容,select * from user where user="root" \G \G表示把结果集竖起来便于查看;
如下authentication_String 就是我们的密码,但是是同password函数处理过的,是不可逆的,所以是安全的;
3.常用权限
sql语句:select, insert ,update, delete , index等
存储过程: create routine, alter routine ,execute ,irigger
管理权限:super, reload , show database ,shutdown, grant option等
所有权限可以查看:https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html
4.添加用户
create user '用户名'@'ip地址' identified by '密码';
grant privileges(权限类型) db.table(数据库表名,所有的可以用*.*) to '用户名'@'ip地址' identified by '密码';//给予权限,在没有该用户的前提下创建用户
insert into mysql.user(host,user,password,[priviligelist]) values(地址,用户名,密码,权限)
5.删除用户
drop user '用户名'@'ip地址' ;
6.查看权限
show grants for '用户名'@'ip地址' ;//查看权限信息
7.授予权限
grant privileges(权限类型).,.,. db.table(数据库表名,所有的可以用*.*表示所有的库,库名.*表示某库下的所有表,该库不能与java连接,连接后需要关闭才能设置) to '用户名'@'ip地址'(所有的ip用‘%’) identified by '密码' with grant option;//授予权限以及grant权限
revoke privileges(权限类型).,.,. db.table(数据库表名,所有的可以用*.*) to '用户名'@'ip地址' identified by '密码' with grant option;
grant all PRIVILEGES on test_db.* to ’root’@'ip' identified by '密码';//all PRIVILEGES 所以的PRIVILEGES 权限;
revoke all privileges ,grant option from '用户名'@'ip地址' ;//收回所有的权限
grant select(属性) on db.table to ’root’@'ip' identified by '密码';//grant 作用在表中的列上
备注:
问题1
在linux上设置ip之后有可能导致jdbc无法连接上,所以将ip改为% 或者一个波段。
问题2
在设置require x509 或者ssl之后 没有认证mysql5.6是无法登陆的,--ssl =false没作用了;