MySQL数据库的实操
MySQL数据库的操作
数据库授权语句 grant all on *.* to '用户'@'%' identified by'密码' 刷新授权表 flush privileges
1.查看所有数据库 show databases; 2.切换数据库 use 库名; 3.创建库并指定字符集 create database 库名 default charset ‘utf8’; 4.查看当前所在数据库 select database(); 5.查看当前登录数据库的用户 select user(); 6.查看创建的库信息 show create database 库名; 7.删除数据库 drop database 库名;
MySQL数据库表的操作
1.查看当前库的所有表 show tables; 2.创建表并指定字段 create table 表名 (字段1 类型 约束条件,字段2 类型 约束条件) 例如:创建school表并指定字段(id,name,sex,引擎为INNODB) create table school (`id` int primary key auto_incremend comment'主键,自增',`name varchar(20) not null,sex enum('男','女') default '男')ENGINE='INNODB' 3.查看表结构 desc 表名; 4.查看表信息 select * from 表名 5.修改表名 rename table 旧表名 to 新表名; alter table 旧表名 rename 新表名; 6.在表中增加字段 alter table 表名 add 字段 类型 约束条件; 7.修改字段名及约束条件,字段类型 alter table 表名 change 旧字段名 新字段名 类型 约束条件 8.修改字段类型及约束条件 alter table modify 字段名 类型 约束条件 9.从表中删除字段 alter table 表名 drop 字段名 10.删除表 drop table 表名;
MySQL数据库表数据的操作
1.向表中插入数据 insert into 表名 values (对应字段的取值) 例如:insert into school (1,teacher,男) insert into 表名 (字段) values (对应字段的取值) 例如:insert into school (id,name,sex) values (2,teacher2,女) 2.删除表中数据 delete from 表名 删除表中所有数据 delete from 表名 where id=1 3.更新表中数据 update 表名 set name=teacher3 where id=2; 4.复制表结构 create table 新表名 (select * from 旧表名 where 1=2) 5.复制表结构及其数据 create table 新表名 (select * from 旧表名 where id=5) 复制id=5的那行
数据库备份
逻辑备份
#语法 mysqldump -u用户名 -p密码 -h主机地址 -P端口 -S套接字文件 #全库备份 mysqldump -p密码 [-A|--all-databases] >alldb.sql #全库备份打包 mysqldump -p密码 -A | gzip > ppp.tar.gz #库级备份 mysqldump -p密码 [-B|--databases] dbname1 dbname2 >dbname.sql #表级备份 mysqldump -p密码 dbname tablename1 tablename2 >db_t1_t2.sql #备份表结构 mysqldump -p密码 dbname tablename -d > tablename_jiegou.sql #导出数据 查看安全路径:show variables like "secure%"; /var/lib/mysql-files mysql> select * from mysql.user into outfile '/var/lib/mysql-files/user.xlsx' #导入数据 mysql> load data infile '/var/lib/mysql-files/user.xlsx' into table user; #恢复数据库 第一种方法: mysql -p密码 < db.sql 第二种方法: cat db.sql | mysql -p密码 第三种方法: mysql>source /opt/backup/db.sql; #恢复数据表 第一种方法: mysql -p密码 dbname < table.sql 第二种方法: cat db.sql | mysql -p密码 dbname 第三种方法: mysql> use dbname mysql> source /opt/backup/table.sql; #更改数据库导出安全目录 mysql> show variables like "secure%"; +------------------+-----------------------+ | Variable_name | Value | +------------------+-----------------------+ | secure_auth | ON | | secure_file_priv | /var/lib/mysql-files/ | +------------------+-----------------------+ #修改方法 mkdir /data chown mysql.mysql /data vim /etc/my.cnf secure_file_priv=/data/ #重启数据库 systemctl restart msyqld根据二进制日志文件恢复数据 1、开启binlog日志功能 vim /etc/my.cnf 添加以下内容 server-id = 1 log-bin = /data/mysql-bin #重启数据库 systemctl restart msyqld #查看二进制日志: mysqlbinlog /data/mysql-bin.00001 --base64-output=decode-rows -vv BEGIN position 123 …… COMMIT position 789 #恢复: mysqlbinlog --start-position 123 --stop-position 789 /data/mysql-bin.00001 | mysql -p密码 school
物理备份
#安装软件 #全量备份 [root@mysql-server ~]#innobackupex --user --password /opt/full #增量备份 [root@mysql-server ~]#innobackupex --user --password --incremental /opt/intr --incremental-basedir=/opt/full/datetime #恢复: [root@mysql-server ~]#systemctl stop mysqld [root@mysql-server ~]#rm -rf /var/lib/mysql/* # 重演 [root@mysql-server ~]#innobackupex --user --password --apply-log --redo-only /opt/full/datetime [root@mysql-server ~]#innobackupex --user --password --apply-log --redo-only /opt/full/datetime --incremental-dir=/opt/intr/datetime #回滚 [root@mysql-server ~]#innobackupex --copy-back #修改权限 [root@mysql-server ~]#chown -R mysql.mysql /var/lib/mysql
启动
systemctl start mysqld