数据库的高级操作

1、数据的备份和还原
2、在数据库中创建和删除用户
3、对数据库的权限进行授予、查看和收回操作
一、数据的备份和还原
数据的备份
1、备份单个数据库
先在C创建文件夹backup
–利用记事本对sql打开

-- MySQL dump 10.13  Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost    Database: chapter08
-- ------------------------------------------------------
-- Server version	5.7.13-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `student`
--

DROP TABLE IF EXISTS `student`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `student`
--

LOCK TABLES `student` WRITE;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT INTO `student` VALUES (1,'Tom',20),(2,'Lucy',16),(3,'Lily',18);
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2019-02-22 22:24:18

2、备份多个数据库

若有多个数据库需要用空格分开

mysqldump -uusername -ppassword --database dbname1[dbaname2 dbname3 …]>filename.sql

3、备份所有数据库

mysqldump -uusername -ppassword --all-databases>filename.sql

数据的还原
还原是指还原数据库中的数据,库是不能被还原的
演示如下
1、删除数据库

DROP DATABASE chapter08;

2、创建数据库

CREATE DATABASE chapter08;

3、还原数据
重新启动一个DOS命令窗口,利用mysql -uroot -ppassword 数据库名<C:/backup/chapter08_20190222
还原数据,查看后结果
4、查看数据
二、用户管理
1、user表,位于mysql数据库中,表中的常见字段
查看表的结构信息 DESC 表名
在这里插入图片描述
在这里插入图片描述
2、创建普通用户
user表中含有用户
通常一个用户无法管理
(1)GRANT
(2)create
(3)INSERT
3、删除普通用户
(1)DROP USER ‘username’@‘hostname’[,‘username’@‘hostname’];
(2)DELETE FROM 数据库.表名 WHERE 条件信息
DELETE USER
DROP USER
4、修改用户密码
mysql中,root用户具有最高的权限,不仅可以修改自己的密码,还可以修改普通用户的密码,对于普通用户只能修改自己的密码。
(1)修改root用户密码
a\使用mysqldamin命令修改root用户的密码
先进入C盘指定目录密码修改1

b、使用update修改root用户密码
利用UPDATE
注意user表中没有password字段,但是用authentication_string替代的,并刷新
在这里插入图片描述
验证:
进入C验证
c、使用SET语句修改root用户密码
root用户登录到mysql服务器后,可以通过SET语句修改root用户的密码
SET PASSWORD=PASSWORD(‘new_password’)
必须使用PASSWORD函数加密
验证
在这里插入图片描述
(2)root用户修改普通用户密码
a、使用GRANT语句修改普通用户密码

GRANT USAGE ON . TO ‘username’@‘localhost’ INDETIFIED BY [PASSWORD]‘new_password’;

b、使用UPDATE语句修改普通用户密码

UPDATE mysql.user set Password=PASSWORD(‘new_password’)
WHERE User='username’and Host=‘hostname’;

c、使用SET语句修改普通用户密码

SET PASSWORD FOR ‘username’@‘localhost’ =PASSWORD(‘new_password’);

(3)普通用户修改密码
普通用户也可以自己修改密码,登录到mysql服务器后,可以通过SET语句设置自己密码,并需要PASSWORD函数加密

SET PASSWORD=PASSWORD(‘new_password’);

三、解决root用户密码丢失
1、停止MYSQL服务器,
2、打开DOS命令行窗口,如左图
3、再打开另一个窗口,进行如右图操作
先左后右
四、权限管理
MySQL中的权限信息被存储在MySQL数据库的user,db,host,table_priv,column_priv和procs_priv表中,当MySQL启动时就会自动加载这些权限。
1、MySQL的权限
MySQL的权限信息,权限名称有CREATE,DROP,ALTER,DELETE,INDEX,UPDATE
2、授予权限
利用GRANT语句给用户授予不同的权限

GRANT privileges[(column)][,privileges[(column)]] ON database.table
TO ‘username’@‘hostname’ [IDENTIFIED BY [PASSWORD]‘password’]…
[WITH with_option [with_option]…]

privileges表示权限类型
创建新用户,并授予权限
3、查看权限

SHOW GRANTS FOR ‘username’@‘localhost’;
在这里插入图片描述

4、收回权限
为了保证数据库的安全性,需要将用户不必要的权限收回,例如某个用户不应该有DELETE权限。利用REVOKE

REVOKE privileges[(column)][,privileges[(column)]] ON database.table
FROM ‘username’@‘hostname’

例如对USER4收回INSERT权限
删除Insert权限
查看删除后INSERT后权限
(2)收回user4的所有权限
收回所有权限
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ZJKL_Silence/article/details/87886792