MySQL5.5.22版本安装配置以及基本命令的使用和管理数据库备份与恢复操作详解

简介:

MySQL是一个真正的多线程、多用户的SQL数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。在2008年以前,MySQL项目由MySQL AB公司进行开发、发布和支持,之后历经Sun公司收购MySQL AB公司,Oracle公司收购Sun公司的过程,目前MySQL项目由Oracle公司负责运营和维护。

接下来将介绍mysql的编译安装过程、服务控制方法、以及如何使用客户端工具访问MySQL数据库。

一、MySQL的编译安装

为了确保MySQL数据库功能的完整性、可定制性、接下来将采用源码编译安装的方式安装MySQL数据库系统。MySQL5.x系列版本的使用最为广泛,该版本的稳定性、兼容性都不错,这里将选用mysql-5.5.38.tar.gz为例

MySQL官方网址https://www.mysql.com/downloads/


1.准备工作

(1.)为了避免发生端口冲突、程序冲突等现象,建议先查询MySQL软件的安装情况,确认没有使用以rpm方式安装的mysql-server、mysql软件包,否则建议将其卸载。


[root@kang ~]# rpm  -q  mysql-server mysql
package mysql-server is not installed
package mysql is not installed
安装系统盘自带的ncurses-devel、 curl-devel 相关依赖

[root@kang ~]# cd  /media/Packages/
[root@kang Packages]# rpm -ivh  ncurses-devel-5.7-3.20090208.el6.x86_64.rpm --nodeps 

(2.)MySQL5.5需要cmake编译安装,所以先安装cmake包。

[root@kang ~]# tar zxf cmake-2.8.12.tar.gz 
[root@kang ~]# cd cmake-2.8.12/
[root@kang cmake-2.8.12]# ./configure 


[root@kang cmake-2.8.12]# gmake && gmake install



2.源码编译及安装MySQL


(1.)创建运行用户

为了加强数据库服务的权限控制,建议使用专门的运行用户,如mysql。此用户不需要直接登录到系统,可以不创建宿主文件夹

[root@kang ~]# groupadd mysql
[root@kang ~]# useradd -M -s /sbin/nologin mysql -g mysql
(2.)解包

将下载的mysql源码吧包解压,释放到/usr/src/目录下,并切换到展开后的源码目录。

[root@kang ~]# tar zxf mysql-5.5.38.tar.gz  -C  /usr/src/
[root@kang ~]# cd /usr/src/mysql-5.5.38/
(3.)配置

在内容丰富,结构庞大的企业网站平台中,可能会用到多种字符集的网页,相应地数据系统也应该支持不同的字符集编码。在配置过程中,可以将默认使用的字符集设置为utf8,并添加其他字符集的支持。

[root@kang mysql-5.5.38]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DSYSCONFDIR=/etc \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_EXTRA_CHARSETS=all

上述配置命令中,各选项的含义如下


  -DCMAKE_INSTALL_PREFIX:指定将mysql数据库程序安装到某目录下,如目录/usr/local/mysql.

  -DSYSCONFDIR:指定初始化参数文件目录。

  -DDEFAULT_CHARSET:指定默认使用的字符集编码,如utf8。

 -DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则

 -DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。


(4.)编译并安装


[root@kang mysql-5.5.38]# make &&  make install 


3.安装后的其他调整


(1.)对数据库目录进行权限设置

[root@kang ~]# chown -R mysql:mysql /usr/local/mysql/
(2.)建立配置文件

在MySQL源码目录中的support-files文件夹下,提供了适合不同负载数据库的样本配置文件。如果不确定数据库系统的应用规模,一般选择my-medium.cnf文件即可,该文件能够满足大多数企业的中等应用需求。


根据以下参考内容建立MySQL系统的/etc/my.cnf配置文件。如果有/etc/my.cnf配置文件,请删掉即可!!!

[root@kang mysql-5.5.38]# rm -rf /etc/my.cnf
[root@kang mysql-5.5.38]# cp support-files/my-medium.cnf /etc/my.cnf
(3.)初始化数据库

为了能够正常使用MySQL数据库系统,应以运行用户mysql的身份执行初始化脚本mysql_install_db,指定数据存放目录等。

[root@kang mysql-5.5.38]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

(4.)设置环境变量

为了方便在任何目录下使用mysql命令,需要在/etc/profile设置环境变量。


[root@kang mysql-5.5.38]# echo "PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
[root@kang mysql-5.5.38]# . /etc/profile
(5.)添加系统服务

若希望添加mysqld系统服务,以便通过chkconfig进行管理,可以直接使用源码包中提供的服务脚本。找到support-files文件夹下的mysql.server脚本文件,将其复制到/etc/rc.d/init.d目录下,并改名为mysqld,然后再设置执行权限,通过执行chkconfig命令将其添加为mysqld系统服务。


[root@kang mysql-5.5.38]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@kang mysql-5.5.38]# chmod  +x /etc/rc.d/init.d/mysqld 
[root@kang mysql-5.5.38]# chkconfig --add mysqld
这样,以后就可以使用service工具或直接执行/etc/init.d/mysqld脚本来控制MySQL数据库服务了。

 

mysql服务器默认通过TCP 3306端口提供服务。通过编辑/etc/my.cnf配置文件中[mysqld]配置段的 port=3306行,可以更改监听端口。


 二、访问与使用MySQL数据库



MySQL数据库系统也是一个典型的c/s(客户端/服务器)架构的应用,要访问MySQL数据库需要使用专门的客户端软件。在Linux系统中,最简单、易用的MySQL客户端软件是其自带的mysql命令工具。


1.登录到MySQL服务器


经过安装后的初始化过程,MySQL数据库的默认管理员用户名为root,密码为空。若要以未设置密码的root用户登录本机的MySQL数据库,可以执行以下操作。


[root@kang ~]# mysql -u root 

在有密码的情况下,还应使用“-p”选项来进行密码校检。


[root@kang ~]# mysql -uroot -p 
Enter password: 
2.执行MySQL操作语句


 验证成功以后将会进入提示符为mysql> 的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。每一条MySQL操作语句以分号 : 表示结束,输入时可以不区分大小写,但习惯上将mysql语句中的关键字部分大写

 

 例如:以用户名root登录到mysql>环境后,执行show master logs;语句可以查看当前数据库服务的日志文件信息。



3.退出mysql>操作环境


在mysql>操作环境中,执行EXIT或QUIT命令可以退出mysql命令工具,返回原来的shell环境。

mysql> exit
Bye
[root@kang ~]# 
三、使用MySQL数据库


熟悉安装及访问MySQL数据库以后,接下来将学习使用MySQL数据库的基本操作,这也是在服务器运维工作中不可或缺的知识。

MySQL是一套数据库管理系统,在每一台MySQL服务器中,支持运行多个库,每个库相当于一个容器,其中存放着许多表

表中的每一行包含一条具体的数据关系信息(如编号为SW01的交换机的购买时间、价格等),这些信息称为数据记录。


1.查看当前服务器中有哪些库


SHOW DATABASES语句:用于查看当前MySQL服务器中包含的库。经初始化后的MySQL服务器。默认建立了四个库:test、mysql、infomation_schema和performance_schema(其中mysql库中包含了用户认证相关的表),执行以下操作可以进行查看。


2.查看当前使用的库中有哪些表


SHOW TABLES语句:用于查看当前所在的库中包含的表。在操作之前,需要先使用USE语句切换到所使用的的库。

例如:执行以下操作可以显示mysql库中包含的所有表。


MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每一个数据表对应为三个文件,后缀名分别为:.frm .myd 和.myi 。


 3.查看表的结构


DESCRIBE语句:用于显示表的结构,即组成表的各字段(列)的信息。需要指定库名.表名作为参数;若只指定表名参数,则需先通过USE语句切换到目标库。

例如:执行以下操作可以查看mysql库中的user表的结构,与直接执行DESCRIBE mysql.user;语句的效果相同。



创建及删除库和表



  当需要为网站平台提供数据库服务时,如何操作来创建新的库呢?根据一份二维数据表格,如何在现有的库中创建表?对于废弃的数据表和库,又该如何进行删除?

接下来主要解决这三个问题

1.创健新的库

CREATE DATABASE语句:用于创建一个新的库,需要指定数据库名称作为参数。

例如:执行以下操可以创健一个名为auth的库。


刚创建的数据库是空的,其中不包含任何表,在/usr/local/mysql/data目录下会自动生成一个与新建的库名相同的空文件夹。


2.创建新的表


CREATE TABLE语句:用于在当前库中创建新的表。需指定数据表名称作为参数,并定义该表格所使用的各字段。基本格式如下:


CREATE TABLE 表名(字段1 名称 类型,字段2 名称 类型,...,PRIMARY KEY(主键名))
创健表之前,应先明确数据表的结构、各字段的名称和类型等信息。例如,若要创建一个包含用户名、密码字串的用户验证表,应先分析表格结构。


上述表格中,“用户名”为不超过16个字节的字符串,不能为空;密码字串为不超过48个字符的字符串(插入记录时使用MySQL的函数加密),默认值为空字串。考虑到字符集兼容性,最好不要使用中文字段名,改用user_name、user_passwd分别表示用户名、密码字串。表格中不能拥有同名的用户,因此可将user_name作为主键。

针对上述分析结果,可以在auth库中按如下操作创建user表。其中,字段定义部分的DEFAULT语句用于设置默认的密码字串,PRIMARY语句用于设置主键字段名。




3.删除一个数据表

DROP TABLE语句:用于删除库中的表,需要指定“库名.表名”作为参数;若只指定表名参数,则需先通过执行USE语句切换到目标库。例如,执行以下操作可以删除名为auth的库。



管理表中的数据记录


参考上面的步骤重新创建auth库和users表,下面将以users表为基础,学习向表中插入、查询、修改及删除数据记录的操作。


1.插入数据记录


INSERT INTO语句:用于向表中插入新的数据记录。语句格式如下所示。


INSERT INTO 表名(字段1,字段22,...)VALUES(字段1的值,字段2的值,...)
执行以下操作将会向auth库中的user表插入一条记录:用户名为zhangsan,对应的密码为123456.注意values部分的值应与前面指定的各字段逐一对应。


在插入新的数据记录时,如果这条记录完整包括表中所有字段的值,则插入语句中指定字段的部分可以省略。

例如:执行以下操作也可以向auth库中的users表插入一条新的记录:用户名为lisi,对应的密码为:654321。



2.查询数据记录


SELECT语句:用于从指定的表中查找符合条件的数据记录。MySQL数据库支持标准的SQL查询语句,语句格式如下。


SELECT 字段1,字段2,...FROM 表名 WHERE 条件表达式
表示所有字段时,可以使用通配符*,若要显示所有的数据记录则可以省略where条件子句。例如,执行以下操作可以查看auth库中users表内的所有数据记录,其中密码字串因已加密,因此不会直接显示出实际的密码内容。

当需要根据特定的条件查找记录时,where条件子句则是必不可少的。例如,若要查找Users表中用户名为zhangsan的记录,显示其中用户名、密码字段的信息,可以执行以下操作。



3.修改数据记录

UPDATE语句:用于修改、更新表中的数据记录。语句格式如下所示


UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] WHERE 条件表达式
执行以下操作可以修改users表中用户名为lisi的记录,将密码字串设为空值。验证记录内容可以发现lisi用户的密码串值已变为空白。




在MySQL数数据库服务器中,用于访问数据库的各种用户(如root)信息都保存在mysql库的users表中,熟练的管理员可以直接修改其中的数据记录。例如,以下操作可以将数据库用户root的密码设为123456,当再次使用mysql -u root -p 访问MySQL数据库服务器时,必须使用此密码进行验证。



若是在Linux命令行环境中执行,还可以使用mysqladmin工具来设置密码。例如,执行以下操作并验证原密码后,可将数据库用户root的密码设置为123457.


[root@kang ~]# mysqladmin  -u root -p password '123457'
Enter password: 
4.删除数据记录


DELETE语句:用于删除表中指定的数据记录。语句格式如下所示。


DELETE FROM 表名 WHERE 条件表达式
执行以下操作可以删除users表中用户名为lisi的数据记录,验证记录内容可以发现lisi用户的数据记录已经消失。


在MySQL数据库服务器中,默认添加了从本机访问数据库的空用户(user、password均为空)。

基于数据库安全性考虑,应该删除这些用户。执行以下操作显示user字段为空的用户记录,并用delete语句进行空用户记录的删除。




四、维护MySQL数据库



MySQL数据库系统的维护工作主要包括用户权限的设置,数据库的备份与恢复。接下来将对上述操作进行讲解


数据库的用户授权


MySQL数据库的root用户账号拥有对所有库、表的全部权限,频繁使用root账号会给数据库服务器带来一定的安全风险。实际工作中,通常会建立一些低权限的用户,只负责一部分库、表的管理和维护操作,甚至可以对查询、修改、删除记录等各种操作做进一步的细化限制,从而将数据库的风险降至最低。

1.授予权限

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户,否则,GRANT语句用于修改用户信息。语句格式如下所示。

GRANT 权限列表 ON 库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY '密码']
使用GRANT语句时,需要注意的事项如下。

权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。

库名.表名:用于指定授权操作的库和表的名称,其中可以使用通配符“*”。例如,使用“auth.*”表示授权操作对象为auth库中的所有表。

用户名@来源地址:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用%通配符,表示某个区域或网段内的所有地址,如%.benet.com、 192.168.1.%等。

IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略 IDENTIFIED BY部分,则用户的密码将为空。

执行以下操作可以添加一个名为xiaoqi的数据库用户,并允许其从本机访问,对auth库中的所有表具有查询权限,验证密码为123456、使用grant语句授权的用户记录,会保存到mysql库的user、db、host、tables_priv等相关表中,无须刷新即可生效。

切换到其他shell终端,以用户xiaoqi的身份连接数据库。当执行授权的数据库操作时将被允许,而执行非授权的数据库操作时将被拒绝。例如,允许用户xiaoqi查询auth中users表的数据记录,但禁止查询其他库中的表的记录。


在企业服务器的应用中,数据库与网站服务器有时候是相互独立的。因此在MySQL服务器中,应根据实际情况创建新的用户授权,允许授权用户从网站服务器访问数据库。通常的做法是,创建一个或几个网站专用的库,并授予所有权限,限制访问的来源IP地址。例如,执行以下操作可以新建bdqn库,并授权从ip地址为192.168.197.180的主机连接,用户名为dbuser,密码为pwd@123,允许在bdqn库中执行所有操作。


2.查看权限

SHOW GRANTS语句:专门用来查看数据库用户的授权信息,通过FOR子句可指定查看的用户对象(必须与授权时使用的对象名称一致)。语句格式如下所示。

SHOW GRANTS FOR 用户名@来源地址

执行以下操作可以查看用户dbuser从主机192.168.197.180访问数据库时的授权信息。其中USAGE权限对应的授权记录中包含了用户的连接密码字串。


3.撤销权限

REVOKE语句:用于撤销指定用户的数据库权限,撤销权限会后的用户仍然可以连接到MySQL服务器,但将被禁止执行对应的数据库操作。语句格式如下所示。

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址
执行以下操作可以撤销用户xiaoqi从本机访问数据库auth的所有权限,

掌握了上述各种MySQL管理命令的使用,已经可以满足大多数网络管理员(非专职数据库管理员)的工作需要。若希望了解更多关于MySQL语句的知识,可以参阅MySQL的在线参考手册。

五、数据库的备份与恢复

及时备份数据库是信息安全管理的重要工作内容之一。MySQL数据库的备份可以采用多种方式。例如,直接打包数据库文件夹/usr/local/mysql/data,或者使用专用的导出工具。接下来以mysql自带的倾倒工具mysqldump为例,分别介绍数据库的备份与恢复的操作方法。

本人声明:如果想了解MySQL的其他备份方式可以点击下面的链接即可查看

MySQL备份详解:http://blog.csdn.net/kangshuo2471781030/article/details/79110423

MySQL备份详解:http://blog.csdn.net/kangshuo2471781030/article/details/79119001

1.备份数据库

通过mysqldump命令可以将指定的库、表或全部的库导出为SQL脚本,便于该命令在不同版本的MySQL服务器上使用。例如,当需要升级MySQL服务器时,可以先用mysqldump命令将原有库信息导出,然后直接在升级后的MySQL服务器中导入即可。

(1.)执行导出操作

使用mysqldump命令导出数据时,默认会直接在终端显示,若要保存到文件,还需要结合shell的>重定向输出操作。命令格式如下所示。

格式1:导出指定库中的部分表。

mysqldump [选项] 库名 [表名1] [表名2] ...> /备份路径/备份文件名
格式2:导出一个或多个完整的库(包括其中所有的表)。

mysqldump [选项] --databases 库名 1 [库名2] ... > /备份路径/备份文件名

格式3:备份MySQL服务器中所有的库。

mysqldump [选项] --all-databases > /备份路径/备份文件名
其中,常用的选项包括“-u”“-p”,分别用于指定数据库用户名,密码。例如,以下操作分别使用格式1、格式2,将mysql库中的user表导出为mysql-user.sql文件,将整个auth导出名为auth.sql文件,所有操作均以root用户的身份进行验证。

查看导出后的文件:


若需要备份整个MySQL服务器中的所有库,应使用格式3。当导出的数据量较大时,可以添加--opt选项以优化执行速度。例如,执行以下操作将创建备份文件all-data.sql,其中包括MySQL服务器中的所有库。


(2.)查看备份文件内容

通过mysqldump工具导出的SQL脚本是文本文件,其中“/*...*/”部分或以“--”开头的行表示注释信息。使用grep、less、cat等文本工具可以查看脚本内容。例如,执行以下操作可以过滤出auth.sql脚本中的数据库操作语句。


2.恢复数据库

使用mysqldump命令导出的SQL备份脚本,在需要恢复时可以通过mysql命令对其进行导入操作。命令格式如下所示。

mysql [选项] [库名] [表名] < /备份路径/备份文件名
当备份文件只包含表的备份,而不包括创建库的语句时,则执行导入操作时必须指定库名,且目标库必须存在。例如,执行以下操作可以从备份文件mysql-user.sql中将表导入test库。

若备份文件中已经包括完整的库信息,则执行导入操作时无须指定库名。例如,执行以下操作可以从备份文件auth.sql恢复auth库。

模拟数据库损坏:删除auth数据库

在本地转移auth库文件,模拟故障,执行数据恢复操作即可。


到这里有关MySQL5.5.38版本的安装、配置、基本命令的操作、数据备份与恢复就演示完毕了!!!

希望对你有所帮助!!!@提前恭祝小年快乐!!!再见!@!!再见再见再见






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值