文章目录
1、mysql 常见版本
- MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
- MySQL Enterprise Edition 企业版本,需付费,可以试用30天。
- MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
- MySQL Cluster CGE 高级集群版,需付费
2、MySQL 安装部署
MySQL:mysql 客户端
MySQL-server:MySQL 服务端程序
源代编译安装:
编译工具:configure、cmake、make
数据库常用的配置选项
-DCMAKE_INSTALL_PREFIX=/PREFIX ----指定安装路径(默认的就是/usr/local/mysql)
-DMYSQL_DATADIR=/data/mysql ----mysql的数据文件路径
-DSYSCONFDIR=/etc ----配置文件路径
-DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用INNOBASE存储引擎
-DWITH_READLINE=1 ----支持批量导入mysql数据
-DWITH_SSL=system ----mysql支持ssl
-DWITH_ZLIB=system ----支持压缩存储
-DMYSQL_TCP_PORT=3306 ----默认端口3306
-DENABLED_LOCAL_INFILE=1 ----启用加载本地数据
-DMYSQL_USER=mysql ----指定mysql运行用户
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默认套接字文件路径
-DEXTRA_CHARSETS=all ----是否支持额外的字符集
-DDEFAULT_CHARSET=utf8 ----默认编码机制
-DWITH_DEBUG=0 ----DEBUG功能设置
1 常见资料:
服务:mysqld
端口:3306
主配置文件:/etc/my.cnf
初始化脚本:mysql_install_db
启动命令:mysqld_safe
数据目录:/var/lib/mysql
套接字文件:/var/lib/mysql/mysql.sock
进程文件:/var/run/mysqld/mysqld.pid
2 MySQL登录及退出命令:
设置密码:mysqladmin-uroot password ‘123456’
登录:mysql-u 用户名-p密码-P 端口-S 套接字文件
-p 用户密码
-h 登陆位置(主机名或ip地址)
-P 端口号(3306改了就不是了)
-S 套接字文件(/var/lib/mysql/mysql.sock)
退出命令:exit或ctrl+d
3、MySQL 管理命令
1. 创建登陆用户
mysql>create user zs@'%' identified by '123'; # %:所有人都可远程登陆终端
2. 测试用户登陆
#yum -y install mysql
#mysql -uzhangsan -p123 -h 192.168.154.10
3. 更改当前用户密码
mysql>set password=password('123123');
4. root用户更改其他用户密码
mysql>set password for dal@'%'=password('12321');
5. root找回自己的密码
#修改配置文件添加skip…tables并重启mysql服务
#vim /etc/my.cnf
#添加一行
skip-grant-tables
[root@client ~]$ systemctl restart mysqld
[root@client ~]$ mysql -uroot
MariaDB [(none)]> update mysql.user set password=password('123') where user='root';
#MariaDB [(none)]> set password=password('1123'); #这样也是可以更改密码
删除skip…tables,并重启
6. 创建查询数据库
MariaDB [(none)]> create database abc; #创建数据库
MariaDB [(none)]> show databases; #查询数据库
7. 创建数据表;
MariaDB [(none)]> use abc; #进入数据库
MariaDB [(abc)]> create table a1 (id int,name char(10)); #创建数据表
MariaDB [(abc)]> describe a1; #查看表结构(字段)
复杂一点的
MariaDB [(abc)]> Mysql>create table a2 (
->id int unsigned not null auto_increment, #字段要求为正数、且自增长、主键
->name char(30) not null default ‘’, #字符型长度30字节,默认值为空格
->age int not null default 0, #字段默认值为0
->primary key (id)); #设置id为主键
MariaDB [abc]> describe a2;
8. 插入数据
MariaDB [abc]>insert into a2 (id,name,age) values (1,‘zhangsan’,21); #指明插入字段和数据
MariaDB [abc]>select * from a2; #查看表内容
MariaDB [abc]>insert into a2 values (2,'lisi',20); #按顺序插入指定字段
MariaDB [abc]>insert into a2 values (3,'wangwu'); #未声明年龄
MariaDB [abc]>insert into a2 values (4,'wanger',19),(5,'sun',25); #插入多条数据
9. 将表a2的内容复制到表a1
MariaDB [abc]>insert into a1 (id,name) select id,name from a2; #查看a2表,并写入a1;
MariaDB [abc]>select * from a1;
10. 删除数据库
MariaDB [abc]> drop database abc;
MariaDB [abc]> show databases;
11. 删除数据表
MariaDB [abc]> drop table a1; #删除表a1
MariaDB [abc]> show tables; #查看当前数据库的表
12. 删除表里的数据记录
MariaDB [abc]> delete from a2 where id=3; #删除id=3的记录
MariaDB [abc]> delete from a2 wherebetween 23 and 25; #删除年龄在23-25之间的
注:库和表的删除用drop,记录删除用delete
13. 修改表中数据
MariaDB [abc]> update a2 set age=21 where id=2;
14. 修改数据表的名称
MariaDB [abc]> alter table a2 rename a1;
15. 修改数据表的字段类型
MariaDB [abc]> describe a1; #查看字段类型
MariaDB [abc]> alter table a1 modify name char(50);
MariaDB [abc]> describe a1;
16. 修改数据表的字字段类型详情
MariaDB [abc]> describe a1;
MariaDB [abc]> altertable a1 change name username char(50) not null default ‘’;
MariaDB [abc]> describe a1;
17. 添加字段
MariaDB [abc]> describe a1;
MariaDB [abc]> alter table a1 add time datetime;
MariaDB [abc]> describe a1;
#默认添加位置是末尾
MariaDB [abc]> alter table a1 add birthday year first; #添加字段到第一列
MariaDB [abc]> alter table a1 add sex nchar(1) after id; #添加到指定字段后
18. 删除字段
MariaDB [abc]>alter table a1 drop birthday;
19. MySQL 用户授权
授权用户全部权限
MariaDB [abc]>select user from mysql.user;
MariaDB [abc]>grant all on aa.a1 to zs@‘%’; #给已存在用户授权
MariaDB [abc]>>grant all on aa.a1 to abc@‘%’identified by ‘123456’; #创建用户并授权
取消abc用户的数据库、表、表中数据的权限
MariaDB [abc]>revoke drop,delete on aa.a1 from abc@‘%’; #取消删除权限(等录abc测试)
MariaDB [abc]>show grants for abc@‘%’; #查看指定用户权限
MariaDB [abc]>show grants for atguigu@‘%’;
三、备份和还原
1 mysqldump备份:
备份:
mysqldump -u 用户名-p 数据库名> /备份路径/备份文件名(备份整个数据库)
mysqldump -u 用户名-p 数据库名表名> /备份路径/备份文件名(备份数据表)
备份多个库:–databases 库1,库2
备份所有库:–all-databases
备份多个表:库名表1表2
还原:mysql数据库< 备份文件
注意:还原时,若导入的是某表,请指定导入到哪一个库中
2 mysqlhotcopy 备份:
备份:mysqlhotcopy --flushlog -u=’用户’ -p=’密码’ --regexp=正则备份目录
还原:cp -a 备份目录数据目录(/var/lib/mysql)
mysqldump和mysqlhotcopy示例:
Mysql备份和还原
把数据库aa 备份到/root目录下
mysqldump –uroot –p aa > ~/aa.sql
模拟数据库aa丢失(删除数据库aa)
Mysql>drop database aa;
通过aa.sql文件还原(指定导入到哪个库中)
mysql –uroot –p test < aa.sql
备份多个数据库(--databases)
mysqldump–uroot –p --databases aa test> abc.sql
还原(先模拟丢失)
mysql –uroot –p < abc.sql
备份有规则的数据库
Mysql>create database a1;
#连续创建三个a开头的数据库
mysqlhotcopy --flushlog –u=‘root’–p=‘456’--regexp=^a
还原(先模拟丢失)
Mysql>drop database a1;
#顺序删除a开头的数据库
cp –a /mnt/* /var/lib/mysql/#复制产生的文件到数据库目录下
#登录数据库查看即可
3 mysql-binlog日志备份:
二进制日志(log-bin日志):所有对数据库状态更改的操作(create、drop、update等)
修改my.cnf配置文件开启binlog日志记录功能
#vim /etc/my.cnf
log-bin=mysql-bin #启动二进制日志
按时间还原:
–start-datetime
–stop-datetime
格式:mysql
binlog --start-datetime ‘YY-MM-DD HH:MM:SS’ --stop-datetime ‘YY-MM-DDHH:MM:SS’ 二进制日志 | mysql-uroot -p
按文件大小还原:
–start-position
–stop-position
3.1 mysql-binlog日志备份示例:
开启二进制日志
查看二进制日志文件
按时间还原:
如果数据库中的bb库被删,需要还原
查看二进制日志内容
还原并查看
mysqlbinlog --start-datetime=‘2018-09-11 14:24:00’–stop-datetime=‘2018-09-11 14:28:00’
mysql-bin.000006 | mysql –uroot –p123123
注:所选时间段一定要完整包含所有动作(可以在原来基础上稍微增加点时间)
按文件大小还原:还原到bb库被删除的数据状态
1.查看bb库被删除前后的文件大小
还原并查看