1. 用户
操作数据库的时候和使用Linux一样,不建议直接使用
root,使用普通用户权限,这样更加安全
1.1 用户信息
在mysql数据库下,这个库里面会自带各种表

里面user表里面,就记录了用户信息

- **
host:**用户可以从哪个主机登录,localhost表明只能从本机登录 - **
user:**用户名 -
authentication_string:password函数加密之后的
所谓的新增、删除、修改用户信息,就是在这个表里面增删查改
1.2 创建用户
语法:
create user '用户名'@'登录主机/IP' identified by '密码'
本机登录:

如果出现报错:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement采用
flush privileges刷新权限,创建完毕之后也可以刷新一下,保证是有效的

任意主机登录:
由于设置的是localhost,所以只能本地登录
如果想设置任意主机登录,采用%
create user 'pyh'@'%' identified by '111222';
Windows的IP是私有IP,经过多次路由转发之后,源地址就不再有效了,所以直接用
%,表明任意主机但是这个操作一般是禁止的,太危险了
设置密码的操作,
mysql命令行一般不会记录下来,即往上翻是翻不到的
Windows登录:

1.3 删除用户
语法:
drop user '用户名'@'主机名'

1.4 修改密码
语法
自己设置自己的密码:
set password=password('新密码');
root用户修改指定用户密码:
set password for '用户名'@'主机名'=password('新密码');
本质上就是
updateupdate user set authentication_string=password('112233');
2. 数据库权限
2.1 给用户权限
新创建的用户,是没有任何权限的,需要给用户授权
语法:
grant 权限列表 on 库.对象名 to '用户名'@'登录主机' [identified by '密码']
权限列表用逗号
,隔开grant select on ... grant select, delete, create on ... grant all [privileges] on *.* to ... #赋予所有权限,所有的库所有的表

查看赋予了哪些权限:
mysql> show grants for 'pyh'@'localhost';
+--------------------------------------------------------------+
| Grants for pyh@localhost |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'pyh'@'localhost' |
| GRANT ALL PRIVILEGES ON `rootDB`.`user` TO 'pyh'@'localhost' |
+--------------------------------------------------------------+
2 rows in set (0.00 sec)
这里给了所有权限
2.2 回收权限
语法:
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

再次查看赋予的权限:
mysql> show grants for 'pyh'@'localhost';
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for pyh@localhost |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'pyh'@'localhost' |
| GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `rootDB`.`user` TO 'pyh'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
insert权限被回收
移除所有权限:

3. 跳过权限验证
如果忘记root的密码,在/etc/my.cnf配置文件下,可添加skip-grant-tables
然后重启mysql服务即可
systemctl stop mysqld
systemctl start mysqld
之后登录就可以跳过权限验证(不是很建议这样做)