默认数据库
在安装mysql数据库后,并没有新建数据库,但其中有默认的四个数据库,各有作用。
四个数据库的作用:
information_schema:
- 这是一个虚拟的数据库,它提供了访问数据库元数据的标准化方式。
- 它包含了诸如数据库、表、列、索引、权限等各种数据库对象的信息。
- 开发人员和管理员可以通过查询 information_schema 库来获取数据库的结构和状态信息。
mysql:
- 这是 MySQL 的系统数据库,用于存储 MySQL 服务器的内部数据和配置信息。
- 它包含了用户账户、权限、存储过程、复制状态等重要的元数据。
- 这个数据库通常只有 MySQL 管理员才能访问和修改。
performance_schema:
- 这是 MySQL 5.5 及以后版本引入的一个用于监控 MySQL 服务器性能的数据库。
- 它提供了大量关于服务器内部运行情况的统计数据,如事件、锁、内存使用等。
- 开发人员和 DBA 可以利用 performance_schema 来诊断和优化数据库性能。
sys:
- 这是一个基于 performance_schema 的视图集合,提供了一组方便的视图和函数。
- 它为常见的性能诊断和优化任务提供了更高级别的访问接口。
- 系统管理员可以使用 sys 库中的视图更方便地分析和诊断数据库的性能问题。
总之, information_schema 提供了标准化的元数据访问,mysql 负责存储 MySQL 内部的系统信息,performance_schema 用于性能监控,而 sys 则是在 performance_schema 基础上提供了更易用的视图和函数。这四个数据库共同构成了 MySQL 数据库管理和优化的基础设施。
存放用户信息的表
mysql的用户,放在mysql数据库中的user表中。
select user,host,authentication_string from mysql.user;
查看当前使用用户
select user();
新建用户
格式:
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
‘用户名’:指定将创建的用户名。
‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
‘密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;若使用加密密码,需要先使用SELECT PASSWORD(‘密码’);获取密文,再在语句中添加 PASSWORD ‘密文’;若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)
例子:
mysql -u用户名 -p密码 -h远程主机 -P端口号
远程登录格式
create user cxk@'192.168.%.%';
建立远程登录用户
create user cxk@'192.168.232.%' identified by '123123';
可以后面加密码
修改用户名称
格式:
rename user '旧名字' to '新名字;
rename user 'cxk@192.168.232.%'@'%' to 'lisi@192.168.232.%'@'%'
删除用户
drop user '用户名';
修改用户密码
set global validate_password_policy=0;
set global validate_password_length=1;
修改密码策略,可以使用简单密码。
格式:
SET PASSWORD = PASSWORD('abc123');
只能给当前用户修改密码。
set password for '用户' = password('密码');
给其他用户修改密码。
破解密码
修改配置文件
vim /etc/my.cnf
[mysqld]
skip-grant-tables 跳过验证
数据库的单用户模式 此模式下权限受到限制,很多功能无法使用, 除了破解密码不要加此项
skip-networking
禁止mysql服务器监听网络连接。
主要是为了避免在破解密码的时候,别的机器也可以登录上来。
update mysql.user set authentication_string='' where user='root' and host='localhost';
清空密码
flush privileges;
注意刷新后生效
远程登录
mysql -ulisi -h192.168.232.20 -p'123123' -P3306
远程登录的服务器的配置
配置可以远程登录的用户
create user lisi@'192.168.232.%' identified by '123123';
授权
grant all on *.* to lisi@'192.168.232.%' identified by'123123';
用户权限管理
权限类别
- 管理类
- 程序类
- 数据库级别
- 表级别
- 字段级别
管理类:
- CREATE USER
- FILE
- SUPER
- SHOW DATABASES
- RELOAD
- SHUTDOWN
- REPLICATION SLAVE
- REPLICATION CLIENT
- LOCK TABLES
- PROCESS
- CREATE TEMPORARY TABLES
库和表级别:针对 DATABASE、TABLE
- ALTER
- CREATE
- CREATE VIEW
- DROP INDEX
- SHOW VIEW
- WITH GRANT OPTION:能将自己获得的权限转赠给其他用户
数据操作
- SELECT
- INSERT
- DELETE
- UPDATE
字段级别
- SELECT(col1,col2,…)
- UPDATE(col1,col2,…)
- INSERT(col1,col2,…)
所有权限
- ALL PRIVILEGES 或 ALL
查看权限
show grants for 'lisi'@'192.168.232.%';
USAGE权限只能用于数据库登陆,不能执行任何操作;USAGE权限不能被回收,即 REVOKE 不能删除用户。
授予权限
GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时, GRANT 语句用于修改用户信息。
格式
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。
数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“ * ”。例如,使用“cxk.* ”表示授权操作的对象为 cxk数据库中的所有表。
‘用户名@来源地址’:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.cxk.com”、“192.168.232.%”等。
IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分,则用户的密码将为空。
例子
GRANT ALL ON *.* TO 'lisi'@'%' IDENTIFIED BY '123456';
允许用户lisi在所有终端远程连接mysql,并拥有所有权限。
不要忘记刷新
flush privileges;
图形界面
输入对应的ip地址和用户。
撤销权限
格式:
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;在这里插入代码片
注意
USAGE权限只能用于数据库登陆,不能执行任何操作;USAGE权限不能被回收,即 REVOKE 不能删除用户。