您的位置:首页 > 数据库

数据库入门

2019-07-23 17:55 197 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44717011/article/details/97004354

一、创建业务数据库
1.1 语法:
create database <数据库名>; #创建数据库
数据库命名规则:
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字

mysql> show create database <数据库名>; #查看创建数据库

mysql> use <数据库名>; #进入数据库

mysql> create table <表名>; #创建表

mysql> desc <表名>; #用来显示表的状态

mysql> insert into <表名> values #插入数据
-> (12),(80);

mysql> select * from <表名>; #查询表

查看:show databases;
查看数据库信息 查看当前连接的数据库 select database ();
查看数据库版本select version ();
查看当前用户 select user ();
查看所有用户 select User,Host FROM mysql.user;
执行Linux命令:
ststem <命令>
使用: use databasename;
创建:mysql> create database test1;
删除:mysql> drop database test1;
数据库表的操作
查看当前数据库下拥有的所有表: show tables
查看数据库表属性定义:mysql> desc user;

1.2 mysql 数据类型:
在MySQL数据库管理系统中,可以通过存储引擎来决定表的类型。同时,MySQL数据库管理系统也提供了数据类型决定表存储数据的类型。MySQL数据库管理系统提供的数据类型:
1.2.1 数值类型
整数类型 TINYINT SMALLINT MEDIUMINT INT BIGINT
浮点数类型 FLOAT DOUBLE
定点数类型 DEC
位类型 BIT
1.2.2 字符串类型
CHAR系列 CHAR VARCHAR
TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT
BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB BINARY系列 BINARY VARBINARY
1.2.3 枚举类型: ENUM
1.2.4 集合类型: SET
1.2.5 时间和日期类型: DATE TIME DATETIME TIMESTAMP YEAR
二、mysql用户管理
2.1 登陆mysql:
mysql -h192.168.5.240 -P 3306 -u root -p123 mysql -e ‘select user,host from user’
-h 指定主机名
-P MySQL服务器端口
-u 指定用户名
-p 指定登录密码 此处mysql为指定登录的数据库
-e 接SQL语句
2.2 创建用户:
方法一:CREATE USER语句创建

CREATE USER user1@’localhost’ IDENTIFIED BY ‘123456’;

方法二: INSERT语句创建

INSERT INTO mysql.user(user,host, password,ssl_cipher,x509_issuer,x509_subject) VALUES(‘user2’,’localhost’,password('123456'),’’,’’,’’);
FLUSH PRIVILEGES;

方法三: GRANT语句创建

GRANT SELECT ON *.* TO user3@’localhost’ IDENTIFIED BY ‘123456’;
FLUSH PRIVILEGES;

2.3 删除用户

方法一:DROP USER语句删除
DROP USER user1@’localhost’;
方法二:DELETE语句删除
DELETE FROM mysql.user
WHERE user=’user2’ AND host=’localhost’;
FLUSH PRIVILEGES;

2.4修改用户密码:
2.4.1 root修改自己密码
方法一:

# mysqladmin -uroot -p123 password 'new_password'   //123为旧密码

方法二:

UPDATE mysql.user SET password=password(‘new_password’)
WHERE user=’root’ AND host=’localhost’;
FLUSH PRIVILEGES;

方法三:

SET PASSWORD=password(‘new_password’);
FLUSH PRIVILEGES;

2.4.2 root修改其他用户密码

方法一:
SET PASSWORD FOR user3@’localhost’=password(‘new_password’);
FLUSH PRIVILEGES;
方法二:
UPDATE mysql.user SET password=password(‘new_password’)
WHERE user=’user3’ AND host=’localhost’;
FLUSH PRIVILEGES;
方法三:
GRANT SELECT ON *.* TO user3@’localhost’ IDENTIFIED BY ‘localhost’;
FLUSH PRIVILEGES;

2.4.3 普通用户修改自己密码

方法一:
SET password=password(‘new_password’);
方法二:
mysqladmin -uzhuzhu -p123 password 'new_password'     //123为旧密码

2.5 数据库备份:
2.5.1 为什么需要备份数据?
在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种:
硬件故障
软件故障
自然灾害
黑客攻击
误操作 (占比最大)
所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略。
能够容忍丢失多少数据
恢复数据需要多长时间
需要恢复哪一些数据
2.5.2 mysql备份类型
在MySQl中我们备份数据一般有几种方式:
热备份
温备份
冷备份
热备份指的是当数据库进行备份时, 数据库的读写操作均不是受影响;
温备份指的是当数据库进行备份时, 数据库的读操作可以执行, 但是不能执行写操作;
冷备份指的是当数据库进行备份时, 数据库不能进行读写操作, 即数据库要下线。

备份数据类型:
数据
二进制日志,
InnoDB事务日志 代码(存储过程、存储函数、触发器、事件调度器)
服务器配置文件
2.5.3 备份工具
mysqldump : 逻辑备份工具, 适用于所有的存储引擎, 支持温备、完全备份、部分备份、对于InnoDB存 储引擎支持热备
cp, tar 等归档复制工具: 物理备份工具, 适用于所有的存储引擎, 冷备、完全备份、部分备份 lvm2 snapshot: 几乎热备, 借助文件系统管理工具进行备份 mysqlhotcopy: 名不副实的的一个工具, 几乎冷备, 仅支持MyISAM存储引擎 xtrabackup: 一款非常强大的InnoDB/XtraDB热备工具, 支持完全备份、增量备份.

2.5.4 设计合适的备份策略
针对不同的场景下, 我们应该制定不同的备份策略对数据库进行备份, 一般情况下, 备份策略一般为以下几种
(1)直接cp,tar复制数据库文件
(2)mysqldump+复制BIN LOGS
(3)lvm2快照+复制BIN LOGS
(4)xtrabackup
以上的几种解决方案分别针对于不同的场景
1.如果数据量较小, 可以使用第一种方式, 直接复制数据库文件 2. 如果数据量还行, 可以使用第二种方式, 先使用mysqldump对数据库进行完全备份, 然后定期备份 BINARY LOG达到增量备份的效果 3. 如果数据量一般, 而又不过分影响业务运行, 可以使用第三种方式, 使用lvm2的快照对数据文件进行 备份, 而后定期备份BINARY LOG达到增量备份的效果 4. 如果数据量很大, 而又不过分影响业务运行, 可以使用第四种方式, 使用xtrabackup进行完全备份后, 定期使用xtrabackup进行增量备份或差异备。
三、mysqladmin
3.1 功能:
执行管理操作的工具。
mysqladmin是一个执行管理操作的客户端程序。它可以用来检查服务器的配置和当前状态、创建和删除数据库等。mysqladmin 工具的使用格式:mysqladmin [option] command [command option]command …option

3.2 应用:
3.2.1 查看服务器状态

[root@localhost system]# mysqladmin -uroot -p status
Enter password:
Uptime: 6796 Threads: 2 Questions: 7 Slow queries: 0 O
3ff7
pens: 110 Flush tables: 2 Open tables: 86
Queries per second avg: 0.001

3.1.2 修改root密码

[root@localhost system]# mysqladmin -u root -pAdmin@123 password 'Cloudbu@123'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

3.2.3 查看mysqlserve是否可用

[root@localhost system]# mysqladmin -uroot -p ping
Enter password:
mysqld is alive
[root@localhost system]# mysqladmin -h192.168.42.185 -uroot -p ping
Enter password:
mysqld is alive

3.2.4 查看mysql版本

[root@localhost system]# mysqladmin -uroot -p version
Enter password:
mysqladmin Ver 8.0.15 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.15
.......

3.2.5 显示服务器的所有运行进程

[root@localhost system]# mysqladmin -uroot -p -i 1 processlist
Enter password:
+----+-----------------+-----------+----+---------+------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+----+---------+------+------------------------+------------------+
| 4 | event_scheduler | localhost | | Daemon | 7558 | Waiting on empty queue | |
| 20 | root | localhost | | Query | 0 | starting | show processlist |
+----+-----------------+-----------+----+---------+------+------------------------+------------------+
[root@localhost system]# mysqladmin -uroot -p processlist
Enter password:
+----+-----------------+-----------+----+---------+------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+----+---------+------+------------------------+------------------+
| 4 | event_scheduler | localhost | | Daemon | 7515 | Waiting on empty queue | |
| 18 | root | localhost | | Query | 0 | starting | show processlist |
+----+-----------------+-----------+----+---------+------+------------------------+------------------+

3.2.6 创建数据库

[root@localhost system]# mysqladmin -uroot -p create data_test
Enter password:
[root@localhost system]# mysqladmin -uroot -pCloudbu@123 create data_test1
mysqladmin: [Warning] Using a password on the command line interface can be insecure.

3.2.7 显示系统的所有数据库

[root@localhost system]# mysqlshow -uroot -p

3.2.8 显示数据库中的所有表

[root@localhost system]# mysqlshow -uroot -p mysql

3.2.9 显示数据库表列的统计

[root@localhost system]# mysqlshow -uroot -p mysql -v

3.2.10 显示数据库表列和行的统计

[root@localhost system]# mysqlshow -uroot -p mysql -v -v

3.2.11 删除数据库

[root@localhost system]# mysqladmin -uroot -p drop data_test

3.2.12 重载权限信息

[root@localhost system]# mysqladmin -uroot -p reload

四、mysqldump
4.1 功能
数据库逻辑备份程序
4.2 应用
非大数据备份解决方案 SQL语句重现 备份数据表需要SELECT权限

# mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
关于数据库名:
-A, --all-databases 所有库
school 数据库名
school stu_info t1 school数据库的表stu_info、t1
-B, --databases bbs test mysql 多个数据库
关于其它参数说明:
--single-transaction #基于此项可以实现对InnoDB表做热备份
-x, --lock-all-tables #执行备份时为所有表请求加锁 MyISAM
-l, --lock-tables
-E, --events #备份事件调度器代码
--opt #同时启动各种高级选项
-R, --routines #备份存储过程和存储函数
-F, --flush-logs #备份之前刷新日志
--triggers #备份触发器
--master-data=2 #备库,该选项将会记录binlog的日志位置与文件名并追加到文件中,如果为1将会输出CHANGE MASTER命令,主从下有用
注意:-B 作用:创建数据库和切换到数据库,恢复时不用创建数据库和删表。备份多个库,-B 数据库1数据库2 .
-d只备份库结构,不包含数据内容
备份:mysqldump -u 用户名 -p 数据库名 表名 > 备份的文件名
备份多个表:mysqldump -u 用户名 -p 数据库名 表名1 表名2 > 备份的文件名

4.2.1 数据库备份

[root@localhost ~]# mysqldump -uroot -pCloudbu@123 --single-transaction --master-data=2 test
> /tmp/test date +%F-%H-%M .sql
[root@localhost tmp]# mysqldump -uroot -pCloudbu@123 --single-transaction --master-data=2 mysql
|gzip > /tmp/mysql date +%F-%H-%M .gz
[root@localhost tmp]# mkdir /backup
[root@localhost tmp]# mysqldump -uroot -pCloudbu@123 --routines --events --triggers --masterdata=2
--flush-logs --all-databases > /backup/all_ date +%F .sql

4.2.3 数据库恢复

[root@localhost tmp]# mysql -uroot -pCloudbu@123 -e 'create database test1'
[root@localhost tmp]# mysql -uroot -pCloudbu@123 test1< /tmp/test_2019-07-20-14-22.sql

4.3 实例
mysqldump全量备份+mysqlbinlog二进制日志增量备份

4.3.1 my.cnf是要开启MySQL log-bin日志功能,若没有开启则,修改配置文件

log_bin = /data/mysql/data/mysql-bin

查看数据库是否开启了二进制日志打印功能:

mysql> show variables like 'log_%';
+----------------------------------------+--------------------------------------
--+
| Variable_name     					  | Value
|
+----------------------------------------+--------------------------------------
--+
| log_bin						       		 | ON
|
| log_bin_basename                    | /usr/local/mysql/data/binlog
.........
log_bin为ON 则表示该功能已经开启。

4.3.2 存在一个完全备份,生产环境一般凌晨某个时刻进行全备
(1)准备数据库和表
(2)表中插入数据
(3)半夜零点手工全备模拟半夜零点全备
(4)备份后继续插入数据
(5)模拟用户破坏数据

grop database <数据库名>;

(6)增量备份–恢复过程
(7)检查凌晨备份
(8)检查全备后的所有binlog

[root@localhost data]# ls -lrt /usr/local/mysql/data/binlog.*

(9)立即刷新并备份出binlog

[root@localhost data]# mysqladmin -uroot -p flush-logs
[root@localhost data]# cp /usr/local/mysql/data/binlog.* /server/backup/

提示:根据时间点及前一个binlog可以知道发现问题时刻前binlog日志。
(10)恢复binlog生成sql语句
mysqlbinlog mysql-bin.000004 > bin.log
(11)恢复凌晨备份
(12)恢复增量备份
4.2.3 mysqlbinlog增量恢复方式
基于时间点恢复
1)指定开始时间到结束时间 myslbinlog mysqlbin.000008 --start-datetime=’2014-10-45
01:10:46’ --stop-datetime=’2014-10-45 03:10:46’-r time.sql
2)指定开始时间到文件结束 myslbinlog mysqlbin.000008 --start-datetime=’2014-10-45
01:10:46’ -d esen -r time.sql
3)从文件开头到指定结束时间 myslbinlog mysqlbin.000008 --stop-datetime=’2014-10-4503:10:46’ -d esen -r time.sql
基于位置点的增量恢复
1)指定开始位置到结束位置 myslbinlog mysqlbin.000008 --start-position=510 --stop- position=1312 -r pos.sql
2)指定开始位置到文件结束 myslbinlog mysqlbin.000008 --start-position=510 -r pos.sql3)从文件开始位置到指定结束位置 myslbinlog mysqlbin.000008 --stop-position=1312 -r pos.sql

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: