数据库管理
一.MySQL
1.版本介绍和选择
排名
https://db-engines.com/en/ranking
1.1 版本
1 | oracle mysql |
1.2 主流版本
1 | 5.6 版本 5.6.36 5.6.38 5.6.40 |
2. MySQL的体系结构
2.1 MySQL是典型的 c/s结构
2.2 连接(linux)的2种方式
1 | 方式一:tcp/ip(远程本地都可以) |
mysql -uroot -poldboy123 -h 10.0.0.200 -P3306
mysql -uroot -poldboy123 -S /tmp/mysql.sock
2.3 MySQL实例
1 | 1.程序不会关闭 |
2.4 mysqld三层结构
1 连接层
1 | 提供连接协议(tcp/socket) |
测试
desc mysql.user;
select user ,authentication_string, host from mysql.user;
1.提供连接协议(TCP ,Socket)
2.用户验证
mysql> show processlist;
+—-+——+———–+——+———+——+———-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+——+———+——+———-+——————+
| 3 | root | localhost | NULL | Sleep | 714 | | NULL |
| 4 | root | localhost | NULL | Query | 0 | starting | show processlist |
+—-+——+———–+——+———+——+———-+——————+
2 rows in set (0.00 sec)
3.提供专用链接线程
2 sql层
1 | 1.接受上层命令 |
3 存储引擎层:事务,锁
1 | 按照sql层结论,找出相应数据,结构化成表的形式 (16进制连接连接层) |
2.5 mysql逻辑结构
1 | 库(schema):存储表的地方(其实就是目录),库名和属性 |
注意:sql语句优化的核心:sql语句执行过程是否最优,干预优化器的选择,
少使用全表扫描
3. sql语句(sql92/sql99标准)
3.1 sql种类
1 | DDL : 数据定义语言 |
3.2 sql语句的操作对象
1 | 库(schema): |
3.3 DDL语句作用
1.库
1 | 库 |
sql语句规范第一条:
1 | sql语句规范第一条: |
2.表
1 | create table |
sql语句规范第二条:
1 | sql语句规范第二条: |
3.4 DCL语句作用
1 | grant 授权 |
3.5 DML语句作用
1 | insert:插入数据 |
sql语句规范第三条:
1 | sql语句规范第三条: |
3.6 DQL语句的作用
1 | select |
sql语句规范第四条:
1 | sql语句规范第四条: |
三.忘记密码处理
6.忘记密码处理
1.设置本地的密码
mysqladmin -uroot -p password 123
2.登陆就需要密码
mysql -uroot -p123
手动输入安全些
mysql -uroot -p
select user,authentication_string,host from mysql.user;
+—————+——————————————-+———–+
| user | authentication_string | host |
+—————+——————————————-+———–+
| root | 23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | localhost |
| mysql.session | THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys | THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| root | 23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | 10.0.0.% |
| bbs | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | 10.0.0.% |
+—————+——————————————-+———–+
5 rows in set (0.00 sec)
*23AE809DDACAF96AF0FD78ED04B6A265E05AA257代表123密码
3.停数据库
/etc/init.d/mysqld stop
4.启动数据库为无密码验证模式
关闭授权和tcp的ip
mysqld_safe –skip-grant-tables –skip-networking &
所有不能执行修改密码已经关闭了授权
grant all on . to root@’localhost’ identified by ‘456’;
只能改
update mysql.user set authentication_string=PASSWORD(‘456’) where user=’root’ and host=’localhost’;
mysql> select user ,authentication_string, host from mysql.user;
+—————+——————————————-+———–+
| user | authentication_string | host |
+—————+——————————————-+———–+
| root | 531E182E2F72080AB0740FE2F2D689DBE0146E04 | localhost |
| mysql.session | THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys | THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| root | 23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | 10.0.0.% |
| bbs | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | 10.0.0.% |
+—————+——————————————-+———–+
5 rows in set (0.00 sec)
/etc/init.d/mysqld restart
测试
[root@standby ~]# mysql -uroot -p123
[root@standby ~]# mysql -uroot -p456
4.mysql数据类型和字符集
4.1 数据类型
1 | 1.整型: |
sql语句规范第五条:
1 | sql语句规范第五条 |
#