所有平台的 MySQL 下载地址为: MySQL 下载 。 挑选你需要的 MySQL Community Server 版本及对应的平台。
Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址:
安装前,我们可以检测系统是否自带安装 MySQL:
rpm -qa | grep mysql
如果你系统有安装,那可以选择进行卸载:
rpm -e mysql // 普通删除模式 rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
安装 MySQL:
接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
权限设置:
chown mysql:mysql -R /var/lib/mysql
初始化 MySQL:
mysqld --initialize
启动 MySQL:
systemctl start mysqld
查看 MySQL 运行状态:
systemctl status mysqld
注意:如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。
此外,你也可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
yum install mariadb-server mariadb
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动
验证 MySQL 安装
在成功安装 MySQL 后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证 MySQL 是否工作正常。
使用 mysqladmin 工具来获取服务器状态:
使用 mysqladmin 命令来检查服务器的版本, 在 linux 上该二进制文件位于 /usr/bin 目录,在 Windows 上该二进制文件位于C:\mysql\bin 。
[root@host]# mysqladmin --version
linux上该命令将输出以下结果,该结果基于你的系统信息:
mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386
如果以上命令执行后未输出任何信息,说明你的Mysql未安装成功。
使用 MySQL Client(Mysql客户端) 执行简单的SQL命令
你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到 MySQL 服务器上,默认情况下 MySQL 服务器的登录密码为空,所以本实例不需要输入密码。
命令如下:
[root@host]# mysql
以上命令执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在 mysql> 提示符执行SQL命令:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.13 sec)
Mysql安装后需要做的
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:
[root@host]# mysqladmin -u root password "new_password";
现在你可以通过以下命令来连接到Mysql服务器:
[root@host]# mysql -u root -p
Enter password:*******
注意:在输入密码时,密码是不会显示了,你正确输入即可。
Windows 上安装 MySQL
Windows 上安装 MySQL 相对来说会较为简单,最新版本可以在 MySQL 下载 中下载中查看(更详细安装:Windows 上安装 MySQL)。
下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\web\mysql-8.0.11 下。
接下来我们需要配置下 MySQL 的配置文件
打开刚刚解压的文件夹 C:\web\mysql-8.0.11 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:
[client] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=C:\\web\\mysql-8.0.11 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错 # datadir=C:\\web\\sqldata # 允许最大连接数 max_connections=20 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB
接下来我们来启动下 MySQL 数据库:
以管理员身份打开 cmd 命令行工具,切换目录:
cd C:\web\mysql-8.0.11\bin
初始化数据库:
mysqld --initialize --console
执行完成后,会输出 root 用户的初始默认密码,如:
... 2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ ...
APWCY5ws&hjQ 就是初始密码,后续登录需要用到,你也可以在登陆后修改密码。
输入以下安装命令:
mysqld install
启动输入以下命令即可:
net start mysql
注意: 在 5.7 需要初始化 data 目录:
cd C:\web\mysql-8.0.11\bin mysqld --initialize-insecure初始化后再运行 net start mysql 即可启动 mysql。
当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:
mysql -h 主机名 -u 用户名 -p
参数说明:
如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:
mysql -u root -p
按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:
Enter password:
若密码存在, 输入密码登录, 不存在则直接按回车登录。登录成功后你将会看到 Welcome to the MySQL monitor... 的提示语。
然后命令提示符会一直以 mysq> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。
MySQL 服务开启后,就可以通过客户端来登录 MySQL 数据库了。在 Windows 操作系统下可以使用 DOS 命令登录数据库,本节将介绍使用命令方式登录 MySQL 数据库的方法。
登录 MySQL 数据库的具体操作步骤如下:
步骤 1):单击“开始”→“Windows 系统”→“命令提示符”,如图所示。
步骤 2):打开命令行提示符界面,输入命令cd C:\Program Files\MySQL\MySQL Server 5.7\bin\,按回车键,如图所示。
步骤 3):在命令提示符界面可以通过登录命令mysql -h 127.0.0.1 -u root -p连接 MySQL 数据库。
按回车键,系统会提示输入密码(Enter password),这里输入配置向导中设置的密码,验证正确后,即可登录 MySQL 数据库,如图所示。
提示:mysql 为登录命令,-h 后面的参数是服务器的主机地址,在这里客户端和服务器在同一台机器上,所以输入 localhost 或者 IP 地址;-u 后面跟登录数据库的用户名称,在这里为 root;-p 后面是用户登录密码。
在 DOS 窗口下运行该命令后,系统会提示输入密码。密码输入正确以后,即可登录到 MySQL 数据库。
可以在 mysql 命令中直接加上密码,该命令为 mysql -h localhost -u root -proot。这里的 -p 后面的 root 就是密码。此处特别注意 -p 和密码之间没有空格。如果出现空格,系统将不会把后面的字符串当成密码来对待。
步骤 4):登录成功后进入 MySQL 初始界面,会出现“Welcome to the MySQL monitor”的欢迎语,然后下面还有一些说明性的语句,如图所示。
这些说明性语句介绍如下:
提示:当窗口中出现如上图所示的说明信息,命令提示符变为“mysql>”时,表明已经成功登录 MySQL 服务器,可以开始对数据库进行操作了。
当 MySQL 软件安装完后,一般都会安装一个简单命令行使用程序(MySQL Command Line Client),该客户端没有流行的用户界面。
选择”开始“→”程序“→”MySQL“→”MySQL 5.7 Command Line Client “,打开 MySQL Command Line Client 进入提示输入密码的界面,如图所示。
输入正确的密码后,登录到 MySQL 软件,如果以这种方式登录 MySQL,需要保证 MySQL 服务处于启动状态。
验证 MySQL 成功安装后,用户需要启动 MySQL 数据库服务并登录。
下面介绍启动MySQL服务,具体操作步骤如下:
步骤 1):在桌面上右击“此电脑”→“管理”命令,如图所示。
步骤 2):弹出“计算机管理”对话框,双击“服务和应用程序”,用户可查看计算机的服务状态,MySQL 的状态为“正在运行”,表明该服务已经启动,如图所示。
注意:由于设置了 MySQL 为自动启动,在这里可以看到,服务已经启动,而且启动类型为自动。如果没有“正在运行”字样,说明 MySQL 服务未启动。可以直接在“计算机管理”窗口用菜单命令启动,也可以通过 DOS 命令启动 MySQL 服务。单击“开始”→“运行”,输入 cmd 命令,按回车键,弹出命令提示符界面,输入 net start mysql,按回车键,就能启动 MySQL 服务,停止服务的命令为 net stop mysql。
配置 MySQL 数据库有两种比较常见的方式,分别是使用配置向导和手动更改,下面我们来分别介绍一下这两种方式
步骤 1):MySQL 安装完成之后,进行配置信息的确认,单击 Next 按钮,如图所示。
步骤 2):进入 MySQL 网络类型配置窗口,采用默认设置,单击 Next 按钮,如图所示。
步骤 3):进入 MySQL 服务器类型配置窗口,采用默认设置,单击 Next 按钮,如图所示。
提示:服务器配置类型:Development Machine,安装的 MySQL 服务器作为开发机器的一部分,在三种可选的类型中,占用的内存最少;Server Machine,安装的 MySQL 服务器作为服务器机器的一部分,占用的内存在三种类型中居中;Dedicated MySQL Server Machine,安装专用 MySQL 数据库服务器,占用机器全部有效的内存。
步骤 4):进入设置服务器的密码窗口,重复输入两次登录密码,单击 Next 按钮,如图所示。
提示:系统默认的用户名为 root,如果想添加新用户,可以单击“Add User(添加用户)”按钮进行添加。
步骤 5):进入服务器名称窗口,设置服务器名称为 MySQL57,单击 Next 按钮,如图所示。
步骤 6):进入插件和版本配置窗口,选择默认配置,单击 Next 按钮,如图所示。
步骤 7):完成 MySQL 的各项配置,如图所示。
步骤 8):进入测试连接窗口,单击 Check 按钮,测试与服务器的连接,提示 Connection successful(连接成功),单击 Next 按钮,如图所
步骤 9):保存各项配置,单击 Finish 按钮,如图所示。
打开 MySQL 安装中心,可以在不同的产品上单击 Reconfigure 链接,手动更改配置,如图所示。
计算机加入域:
一、查看本机ip,然后ping 域ip,看两机是否相通
二、修改DNS为域服务器的IP(域服务搭建时自己会搭建DNS,所以写域服务器IP即可)
三、将计算机加入域第一步
四、输入域账户和密码即可加入成功,重启电脑即可生效
退出域:
其实退出域和加入域是一样的操作,右键计算机》》点击更改设置》》点击更改
输入域账户密码即可退出
成功退出!
一、安装dns服务器
1、服务器管理器->添加角色
2、安装 dns服务器
3、一直点下一步
二、dns服务器安装成功后 安装 域控服务器
1、添加角色 找到
2、一直点下一步知道安装完成
三、完成 AD服务器安装后 按 Win+R 输入 dcpromo
跟着引导走知道输入域名
需要注意
不要选择默认 要选择 08 r2
然后到
点击确定就行了
完成后重启下
这样就弄好了
客户机加入
1、把客户级的dns服务配置好 过程和之前一样
2、把客户级的dns地址设置成主控域的ip地址
3、高级系统设置->更改 输入域 yy.com 最后输入 有权限加入的用户名密码
一、MySQL完全备份与恢复
备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等。
1、数据备份的重要性
在企业中数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性及数据的可靠性是运维的重中之重,任何数据的丢失都可能对企业产生严重的后果。通常情况下造成数据丢失的原因如下几种:
程序错误
人为操作错误
运算错误
磁盘故障
灾难(火灾、地震)和盗窃
三、常见的备份方法
二、数据库备份类型
1、从物理与逻辑的角度:
数据库备份可以分为物理备份和逻辑备份。物理备份是对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。这种类型的备份适用于在出现问题时需要快速恢复的大型重要数据库。
物理备份又可以分为冷备份(脱机备份)、热备份(联机备份)和温备份。
- 冷备份:在数据库关闭状态下进行备份操作;
热备份:在数据库处于运行状态时进行备份操作,该备份方法依赖数据库的日志文件;
- 温备份:数据库锁定表格(不可写入,但可读取)的状态下进行备份;
逻辑备份是对数据库逻辑组件(如表等数据库对象)的备份,表示为逻辑数据库结构(create database、create table语句)和内容(insert语句或分隔文本文件)的信息。这种类型的备份使用于可以编辑数据值或表结构较小的数据量,或者在不同的机器体系上重新创建数据。
2、从数据库的备份策略角度:
从数据库的备份策略角度,数据库的备份可分为完全备份、差异备份和增量备份。其中呢,完整备份是实现差异、增量备份的基础。
完整备份:每次对数据进行完整的备份,即对整个数据库的备份。备份与恢复的操作非常简单,但是数据存在大量的重复,会占用大量的磁盘空间,备份的时间也很长。
差异备份:备份那些自从上次完全备份之后被修改过的所有文件,备份的时间点是从上次完整备份起,备份数据会越来越大,恢复数据时,只需恢复上次的完全备份和最近的一次差异备份。
- 增量备份:只有在那些在上次完全备份或增量备份后被修改的文件才会被备份,以上次完整备份或上次增量备份的时间为时间点,仅仅备份这之间的数据变化,因而备份的数据量也小,占用空间小,备份速度快,但恢复时,需要从上一次的完整备份开始到最后一次增量备份之间的所有增量依次恢复,一旦中间的数据发生损坏,将导致数据的丢失。
三、常见的备份方法
MySQL数据库的备份可以采用很多种方式,如直接打包数据库文件(物理冷备份)、专用备份工具(mysqldump)、二进制日志增量备份、第三方工具备份等。
1、物理冷备份
物理冷备份时需要在数据库处于关闭状态下,能够较好地保证数据库的完整性。物理冷备份一般用于非核心业务,这类业务一般都允许中断,物理冷备份的特点就是速度快,恢复时也是最为简单。
2、专用备份工具mysqldump或mysqlhotcopy
mysqldump程序和mysqlhotcopy都可以做备份。mysqqldump是客户端常用逻辑备份程序,能够产生一组被执行以再现原始数据库对象定义和表数据的SQL语句。它可以转储一个到多个MySQL数据库,对其进行备份或传输到远程SQL服务器。mysqldump更为通用,因为它可以备份各种表。mysqlhotcopy仅适用于某些存储引擎。
3、通过启用二进制日志进行增量备份
MySQL支持增量备份,进行增量备份时必须启用二进制日志。二进制日志文件为用户提供复制,对执行备份点后进行的数据库更改所需的信息进行恢复。如果进行增量备份(包含自上次完全备份或增量备份以来发生的数据修改),需要刷新二进制日志。
四、数据库完全备份操作
1、备份前准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@centos01 ~]# mysqladmin -u root password <!--mysql数据库设置密码--> New password: <!--输入密码--> Confirmnewpassword: <!--确认密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 <!--登录MySQL数据库--> mysql> create database benet; <!--创建benet数据库--> mysql>usebenet; <!--切换到benet数据库创建表--> mysql> create table 一班学生成绩 (姓名 char(3),班级 char(5),学号 char(8),语文 char(3), 数学char(3),英语 char(3),理综 char(3), primary key (学号)); <!--创建表,表名字为一班学生成绩,第一列名字是姓名,第二列名字为班级,第三列名字 为学号,第四列名字为语文,第五列名字为数学,第六列名字为英语,第七列名字为理综--> mysql> insert into 一班学生成绩 value ('张三','一班','20170822','110','105','92','235'); <!--表中插入数据--> mysql> insert into 一班学生成绩 value ('李四','一班','20170820','95','115','110','260'); <!--表中插入数据--> mysql> insert into 一班学生成绩 value ('王五','一班','20170818','95','103','108','270'); <!--表中插入数据--> mysql> insert into 一班学生成绩 value ('赵六','一班','20170816','100','109','112','265'); <!--表中插入数据--> mysql> select * from benet.一班学生成绩; <!--查看一班学生成绩表中所有数据--> |
2、物理冷备份与恢复
物理冷备份一般用tar命令直接打包数据库文件夹,而在进行备份之前需要使用“systemctl stop mysqld”命令关闭mysql服务。
1)备份数据库
创建一个/bak目录作为备份数据存储路径,使用tar创建备份文件。整个数据库文件夹备份属于完全备份。
1 2 3 4 5 6 |
[root@centos01 ~]# systemctl stop mysqld <!--停止mysql服务--> [root@centos01 ~]mkdir/bak/ <!--创建存储备份目录--> [root@centos01 ~]# tar zcf /bak/mysql_all-$(date+%F).mysql.gz /usr/local/mysql/data/ <!--直接tar打包数据库文件--> [root@centos01 ~]# ls /bak/ <!--查看备份的数据--> -rw-r--r-- 1 root root 766598 10月 31 03:57 /bak/mysql_all-2019-10-31.mysql.gz |
2)恢复数据库
1 2 3 4 5 6 7 8 |
[root@centos01 ~]mkdirtest <!--创建恢复数据目录--> [root@centos01 ~]# tar zxvf /bak/mysql_all-2019-10-31.mysql.gz -C ./test/ <!--解压缩备份数据到恢复目录--> [root@centos01 data]# cd /usr/local/mysql/data/ <!--进入数据原始位置--> [root@centos01 data]# rm -rf ./* <!--删除数据--> [root@centos01 ~]# cd ./test/usr/local/mysql/data/ <!--切换到恢复目录--> [root@centos01date]#mv ./* /usr/local/mysql/data/ <!--将恢复目录数据恢复到原始位置--> [root@centos01 ~]# systemctl start mysqld <!--启动mysql服务--> |
3、mysqldump备份与恢复
通过mysqldump命令可以将指定的库、表或全部的库导出为SQL脚本,便于该命令在不同版本的MySQL服务器上使用。
1)备份恢复所有数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[root@centos01 ~]# mysqldump -uroot -ppwd@123 --opt --all-databases > ./test/benet_databases.sql <!--备份所有库,opt选项是优化执行速度--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--数据密码--> mysql> show databases; <!--查看所有数据库--> +--------------------+ | Database | +--------------------+ | information_schema | | benet | | mysql | | performance_schema | | test | +--------------------+ mysql> drop database benet; <!--删除benet数据库--> mysql> show databases; <!--查看数据库是否删除--> +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ [root@centos01 ~]# mysql -u root -p < ./test/benet_databases.sql Enter password: <!--恢复所有数据库--> mysql> show databases; <!--查看数据库是否恢复--> +--------------------+ | Database | +--------------------+ | information_schema | | benet | | mysql | | performance_schema | | test | +--------------------+ mysql> source ./test/benet_databases.sql <!--也可以通过这种方法恢复误删除的数据库--> |
2)备份恢复数据库中的表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@centos01 ~]# mysqldump -uroo t -ppwd@123 benet 一班学生成绩 > ./test/benet_一班学生成绩.sql <!--备份数据库下的表--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--输入密码--> mysql>usebenet; <!--切换到benet数据库--> mysql> drop table 一班学生成绩; <!--删除一班学生成绩表--> mysql> show tables; <!--查看表是否删除--> Emptyset (0.00 sec) [root@centos01 ~]# mysql -uroot -p benet < ./test/benet_一班学生成绩.sql <!--恢复误删除的表--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--输入密码--> mysql>usebenet; <!--切换到benet数据库--> Database changed mysql> show tables; <!--查看误删除的表是否恢复--> +--------------------+ | Tables_in_benet | +--------------------+ | 一班学生成绩 | +--------------------+ 1 row in set (0.00 sec) |
五、MySQL增量备份与恢复
使用mysqldump进行完全备份,备份的数据中有重复数据,备份时间与恢复时间过长。而增量备份就是备份自上一次备份之后增加或改变的文件或内容。
1、MySQL增量备份的特点
与完全备份不同,增量备份没有重复数据,备份量不大,时间短;但其恢复麻烦,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复。可以通过MySQL提供的二进制日志间接实现增量备份。
2、MySQL增量备份与恢复
二进制日志保存了所有更新或者可能更新数据库的操作。二进制日志在启动MySQL服务器后开始记录,并在文件达到二进制日志所设置的最大值或者接收到flush logs命令后重新创建新的日志文件,生成二进制文件序列,并及时把这些日志保存到安全的存储位置,即可完成一个时间段的增量备份。
要进行MySQL的增量备份,首先要开启二进制日志功能,开启MySQL的二进制日志功能的实现方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@centos01 ~]# vim /etc/my.cnf <!--进入MySQL配置文件--> ....... <!--此处省略部分内容--> log-bin=mysql-bin <!--开启二进制日志功能--> [root@centos01 ~]# systemctl restart mysqld <!--重启MySQL服务--> [root@centos01 ~]# ls -l /usr/local/mysql/data/ ...... <!--此处省略部分内容--> -rw-rw---- 1 mysql mysql 27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql 1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql 1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql 507535 11月 1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql 507229 11月 1 09:40 mysql-bin.000005 -rw-rw---- 1 mysql mysql 95 11月 1 09:37 mysql-bin.index drwx------ 2 mysql mysql 4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql 20 10月 30 23:56 test |
1)增量备份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
[root@centos01 ~]# mysqladmin -uroot -ppwd@123flush-logs <!--刷新二进制日志--> [root@centos01 ~]# ls -l /usr/local/mysql/data/ <!--查看二进制日志文件--> ...... <!--此处省略部分内容--> -rw-rw---- 1 mysql mysql 27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql 1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql 1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql 507535 11月 1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql 507272 11月 1 09:49 mysql-bin.000005 -rw-rw---- 1 mysql mysql 107 11月 1 09:49 mysql-bin.000006 -rw-rw---- 1 mysql mysql 114 11月 1 09:49 mysql-bin.index drwx------ 2 mysql mysql 4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql 20 10月 30 23:56 test [root@centos01 ~]# mysql -uroot -ppwd@123 <!--登录mysql数据库--> mysql>usebenet; <!--切换到benet数据库--> mysql> insert into 一班学生成绩 value ('李宁','二班','20170824','92','98','105','235'); <!--录入新的数据--> Query OK, 1 row affected (0.01 sec) mysql> insert into 一班学生成绩 value ('陈铭','二班','20170826','111','107','96','204'); <!--录入新的数据--> Query OK, 1 row affected (0.00 sec) mysql> select *from 一班学生成绩; <!--查看新数据是否录入--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+ 6 rows in set (0.00 sec) [root@centos01 ~]# mysqladmin -uroot -ppwd@123flush-logs <!--刷新二进制日志--> [root@centos01 ~]# ls -l /usr/local/mysql/data/ <!--查看二进制日志文件--> ...... <!--此处省略部分内容--> -rw-rw---- 1 mysql mysql 27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql 1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql 1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql 507535 11月 1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql 507272 11月 1 09:49 mysql-bin.000005 -rw-rw---- 1 mysql mysql 649 11月 1 09:58 mysql-bin.000006 -rw-rw---- 1 mysql mysql 107 11月 1 09:58 mysql-bin.000007 -rw-rw---- 1 mysql mysql 133 11月 1 09:58 mysql-bin.index drwx------ 2 mysql mysql 4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql 20 10月 30 23:56 test [root@centos01 ~]# cp /usr/local/mysql/data/mysql-bin.000006 /root/test/ <!--复制二进制日志--> |
2)模拟误操作删除一班学生成绩表
1 2 3 4 5 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist |
3)恢复误删除的表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看完全备份数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | +--------+--------+----------+--------+--------+--------+--------+ [root@centos01 ~]# mysqlbinlog --no-defaults /root/test/mysql-bin.000006 |mysql -u root -p <!--恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看增量恢复数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+ |
3、基于位置恢复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看完全备份是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | +--------+--------+----------+--------+--------+--------+--------+ [root@centos01 ~]# mysqlbinlog --no-defaults /root/test/mysql-bin.000006 <!--查看二进制日志文件确认恢复的位置或时间点--> ...... <!--此处省略部分内容--> # at 176 <!--at就是我们称之为操作ID,下面紧跟的是时间标记--> #191101 9:55:33 server id 1 end_log_pos 329 Query thread_id=9 exec_time=0 error_code=0 usebenet/*!*/; SET TIMESTAMP=1572573333/*!*/; insert into 一班学生成绩 value ('李宁','二班','20170824','92','98','105','235') /*!*/; # at 329 #191101 9:55:33 server id 1 end_log_pos 356 Xid = 278 COMMIT/*!*/; # at 356 #191101 9:55:43 server id 1 end_log_pos 425 Query thread_id=9 exec_time=0 error_code=0 SET TIMESTAMP=1572573343/*!*/; BEGIN /*!*/; # at 425 <!--at就是我们称之为操作ID,下面紧跟的是时间标记--> #191101 9:55:43 server id 1 end_log_pos 579 Query thread_id=9 exec_time=0 error_code=0 SET TIMESTAMP=1572573343/*!*/; insert into 一班学生成绩 value ('陈铭','二班','20170826','111','107','96','204') /*!*/; [root@centos01 ~]# mysqlbinlog --no-defaults --stop-position='425'/root/test/mysql-bin.000006 |mysql -uroot -p <!--基于ID恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | +--------+--------+----------+--------+--------+--------+--------+ |
上述命令中“--stop-position”指定的是停止的位置,如果仅恢复“陈铭”的信息,跳过“李宁”的信息恢复,可以使用“--start-position”选项指定开始恢复数据的位置。这时所恢复的数据是从指定位置开始直到二进制日志文件的最后。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysqlbinlog --no-defaults --start-position='425'/root/test/mysql-bin.000006 |mysql -uroot -p <!--基于ID恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+ |
4、基于时间点恢复
基于时间点恢复数据所使用的选项是“--stop-datetime”,指定的时间同样也是查询二进制日志所得。执行一下操作可以实现仅恢复到9:55:43之前的数据,即不恢复“陈铭”的信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysqlbinlog --no-defaults --stop-datetime='2019-11-01 9:55:43'/root/test/mysql-bin.000006 |mysql -uroot -p <!--基于时间点恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | +--------+--------+----------+--------+--------+--------+--------+ |
执行以下操作可以实现仅恢复“陈铭”的信息,跳过“李宁”的信息恢复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysqlbinlog --no-defaults --start-datetime='2019-11-01 9:55:43' /root/test/mysql-bin.000006 |mysql -uroot -p <!--基于时间恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+
|
1、打开SQL Server Management Studio会弹出如下界面。
第一个箭头指向的就是服务器名称,如果用ip无法连接sql时候,可以用服务器名称来连接。
验证方式选择:sql server身份验证。
然后输入数据库用户名和密码,如果能连接则表示资料填写正常,不能连接则表示用户名或密码错误。
很多客户碰到这样的问题,sql资料都填写正确了,用sql管理器连接也正常,但是网站安装时候就提示连接不上,如下图:
出现这个问题一般都是sql的Tcp/Ip协议被禁用,解决办法如下
1、打开sql配置管理器,不同sql版本稍微有点区别,如下图:
2、打开配置界面,检测Tcp/Ip协议是否启用,如下图:
左边三个菜单的Tcp/Ip协议检测是否已经启用,如果没有启用,双击右侧的Tcp/Ip开启即可。
3、开启后需要重启sql server服务才生效,重启方法,打开SQL Server Management Studio,右键点击sql服务器名字,选择重新启动,如下图
点击是后重启sql,设置生效。