一、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文件中)
- 如果使用
- 存储表结构(5.7版本存在):
- 如果表使用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:

最低0.47元/天 解锁文章
1149

被折叠的 条评论
为什么被折叠?



