一.数据库概述
1.1数据表对应的文件
MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,
用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为“. frm"," .MYD"和“.MYI"。
MYD"文件是MyISAM存储引擎专用,存放MyISAM表的数据。
每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm" 文件在一起。
”.MYI"文件也是专属于MyISAM 存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM
存储来说,可以被cache的内容主要就是来源于“.MYI"文件中。每一个MyISAM表对应一个“.MYI"文件,存放于位置和“. frm"以及“.MYD”一样。
MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件( frm, myd,myi)。每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI文件中。
另外还有“. ibd"和ibdata 文件,这两种文件都是用来存放Innodb数据的,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。
独享表空间存储方式使用“. ibd"文件来存放数据,且每个表一个“.ibd"文件,文件存放在和MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置) ibdata 文件。
1.2数据库常见的数据类型
类型 | 描述 |
int | 整型,用于定义整数类型的数据 |
float | 单精度浮点4字节32位,准确表示到小数点后六位 |
double | 双精度浮点8字节64位 |
char | 固定长度的字符类型 ,用于定义字符类型数据 |
varchar | 可变长的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位--> 指定长度数组 |
注意:
- char如果存入数据的实际长度比指定长度要小,会补空格至指定长度;
- 如果存入的数据的实际长度大于指定长度;
- 低版本会被截取,高版本会报错。
二.数据库的基本操作
1.1SQL语句
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
1.2SQL语句的分类
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)
1.3进入数据库的方法
①登录本地mysql
mysql # 或者 mysql -u root # 或者 mysql -u root -p
②登录远程mysql
#指定主机名和端口号,有时也没有端口号
mysql -h 主机 -P 端口 -u 用户名 -p
③数据库的权限验证
安装MySql 设置my.ini配置文件的时候,常常会添加 skip-grant-tables #跳过数据库权限验证 这常常导致一个现象,本地连接数据库可以使用任意账号或者密码。 但是去掉之后,又常常会出现ERROR 1045等问题。 这可能是因为数据库中用户密码的问题。所以我们可以跳过数据权限验证,重新设置一下
1.4DDL:数据定义语言
用于创建数据库对象,如库、表、索引等
create:创建
drop:删除
alter:修改
1.4.1查看数据库
1.4.2创建新的数据库
CREATE DATABASE 数据库名; //创建数据库
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]); //创建数据表
1.4.3查看数据结构
USE 数据库名; //能对数据该数据库进行操作 SHOW TABLES; //查看数据库中的表信息
DESCRIBE [数据库名] 表名 //显示数据表的结构
desc 表名 //也可以使用desc查看表结构
三.数据库用户管理和授权
3.1数据库用户管理
3.1.1新建用户
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码']; '用户名':指定将创建的用户名 '来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符% '密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密
若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文'; 若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用) CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456'; SELECT PASSWORD('abc123'); //获取加密密码 CREATE USER 'user2'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'; //使用加密密码
3.1.2查看用户信息
创建后的用户保存在mysql 数据库的user表里
USE mysql; SELECT User,authentication_string,Host from user;
3.1.3重命名指定
RENAME USER 'zhangsan'@'localhost' TO 'lisi'@'localhost';
3.1.4删除用户
DROP USER 'lisi'@'localhost' ;
3.1.5修改当前密码
SET PASSWORD = PASSWORD('abc123');
3.1.6修改其他用户密码
SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('abc123T');
3.1.7忘记root密码的解决办法
①修改/etc/my.cnf 配置文件,免密登陆mysql vim /etc/my.cnf [mysqld] skip-grant-tables #添加,使登录mysql不使用授权表 systemctl restart mysqld mysql #直接登录 ②然后使用SQL语句修改密码 UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root'; FLUSH PRIVILEGES; quit mysql -u root -pabc123
注意:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务
3.2数据库授权
3.2.1grant 提权
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select, insert,update“
3.2.2授权用户权限是all privilege。
all privilege权限如下:
all //代表所有权限
insert(插入数据) select (查询数据) update (更新表的数据) delete(删除表中数据) create (创建库,表) drop(删除库,表) refernces index(建立索引) alter(更改表属性) create temp orary tableslock tables (锁表) execute create view (创建视图) show view(显示视图) create routine(创建存储过程) alter routine(修改存储过程) event(事件) trigger on(创建触发器)
四.总结
- 对数据库,表的操作(增删改查)
- 设置mysql配置添加skip-grant-tables ,跳过数据库权限验证,一般用于忘记数据库密码时
- 对数据用户进行授权,给用户需要的取消,属于数据库安全方面
标签:文件,数据库,MYSQL,用户,密码,mysql,授权,PASSWORD,数据 From: https://www.cnblogs.com/suoluo212/p/16918056.html