【MySQL】Linux下MySQL的目录结构、用户、权限与角色

一、Linux下MySQL的目录结构

1、MySQL相关目录

  • 数据库文件存放路径:/var/lib/mysql
  • 数据库命令存放路径:/user/bin/user/sbin
  • 配置文件目录:/usr/share/mysql-8.0//usr/share/mysql//etc/my.cnf

2、假设我们创建了一个数据库dbtest1,在这个数据库下创建了表test1

  • 如果表使用InnoDB存储结构,在/var/lib/mysql/dbtest1下会生成如下文件
    • 存储表结构(5.7版本存在):test1.frm
    • 存放此数据库的字符集、比较规则等配置(5.7版本存在):db.opt
    • 数据信息和索引信息存放:
      • 如果使用系统表空间存储模式:表数据会存放到/var/lib/mysql/ibdata1
      • 如果使用独立表空间存储模式:/var/lib/mysql/dbtest1下会生成test1.idb(8.0版本没有.frm和.opt文件,独立表空间存储模式下,表结构、数据以及db.opt存放的配置信息都会存放到.idb文件中)
  • 如果表使用MyISAM存储结构,在/var/lib/mysql/dbtest1下会生成如下文件
    • 存储数据信息(如果采用独立表空间的存储模式):test1.MYD(MyData)
    • 存放索引信息文件:test1.MYI(MyIndex)
    • 存储表结构:test1.frm(5.7版本)或test_xxx.sdi(8.0版本)
  • 创建视图:MySQLl5.7会创建一个xxx_view.frm存放视图结构(8.0版本还没找到在哪,暂时留一个疑问)

决定使用系统表空间还是独立表空间,由参数innodb_file_per_table决定,可以在my.cnf下配置

  • innodb_file_per_table=0:使用系统表空间
  • innodb_file_per_table=1:使用独立表空间
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)

mysql>

这里的ON,表示使用独立表空间

3、可以使用命令ibd2sdi --dump-file=test1.txt test1.ibd查看存放表数据的文件test1.ibd

二、用户管理

1、查看当前系统中存在的用户
使用mysql这个database,执行select host,user from user;语句

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>
mysql>
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
4 rows in set (0.00 sec)

mysql>

2、创建用户CREATE USER

mysql> create user 'test001' identified by 'test001Pwd';
Query OK, 0 rows affected (0.01 sec)

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| %         | test001          |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
5 rows in set (0.00 sec)

mysql>
mysql> create user 'test001'@'localhost' identified by 'test001Pwd';
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| %         | test001          |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | test001          |
+-----------+------------------+
6 rows in set (0.00 sec)

mysql>

我们发现,同一个用户test001,可以被创建多次
因为user表中,host+user字段是联合主键

联合主键:指的是把两个列看成是一个整体,这个整体是不为空,唯一,不重复

3、修改用户名(注意flush privileges)

mysql> create user 'test002'@'localhost' identified by 'test002Pwd';
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| %         | test001          |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | test001          |
| localhost | test002          |
+-----------+------------------+
7 rows in set (0.00 sec)

mysql>
mysql> update user set user = 'test003' where user = 'test002' and host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值