codecamp

Linux的MySQL数据库系统

防伪码:锲而舍之,朽木不折;锲而不舍,金石可镂

            第三章、MySQL数据库系统


   目前,比较主流的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是自由或开放源码软件(FLOSS),因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。

   为方便演示,我们将使用图形化界面讲解MySQL基本操作、备份恢复以及用户授权

一、起源

a、MySQL是开源的关系型数据库服务器软件

b、目前由Oracle公司开发和维护

c、官网:http://www.mysql.com/

二、优点

a、多线程、多用户

b、基于C/S(客户端/服务器)架构

c、高性能、高可靠、易于使用

3、MySQL的编译安装

三、MySQL编译安装

1、准备工作:

a、确认没有使用rpm方式安装,否则建议将其卸载

rpm -q mysql-server mysql(查询状态)

rpm -ivh /media/RHEL_6.5\ x86_64\ Disc\ 1/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm(安装自带的ncurses-devel包,即软件开发包)

b、cmake编译安装

2、源码编译安装

a、创建运行用户,此处以用户和组都为mysql

b、解包

c、配置(默认使用字符集utf8,并且添加其他字符集的支持)

字符如下:

cmake -DCMAKE_INSTALL_PREFIX(MySQL数据库程序存放目录)=/usr/local/mysql 

-DSYSCONFDIR(初始化参数文件目录)=/etc 

-DDEFAULT_CHARSET(默认字符集编码,如utf8)=utf8 

-DDEFAULT_COLLATION(默认字符集校对规则)=utf8_general_ci 

-DWITH_EXTRA_CHARSETS(额外支持的其他字符集编码)=all

d、编译并安装

3、安装后的调整

a、对数据库目录进行权限设置

b、建立配置文件(一般选择my-medium.cnf即可,该文件能够满足大多数企业的中等应用需求)

注:MySQL服务器的配置文件默认位于/etc/my.cnf

MySQL端口号:3306

SQLServer端口号:1433(面试题)

c、初始化数据库

以内置账户执行初始化脚本mysql_install_db,指定数据存放目录

/usr/local/mysql/scripts/mysql_install_db  

--user=mysql  --basedir(基本目录)=/usr/local/mysql 

--datadir(数据目录)=/usr/local/mysql/data/

d、设置环境变量(即每次开机会自动加载识别)

注:. /etc/profile(空格代表另一个目录在执行)

4、添加系统服务(便于chkconfig进行管理)

注:将support-files文件夹下的mysql.server脚本,复制到/etc/rc.d/init.d目录下,

改名为mysqld,设置执行权限,然后将mysqld添加为系统服务

然后启动服务,查看运行状态,监听端口

访问数据库;

mysqladmin -u root -p password '新密码'(为安全起见,建议更改初始密码,默认无密码)

mysql -u root -p

exit或quit可以退出mysql命令工具

四、使用MySQL数据库

1、查看数据库结构

show database(查看库)

use mysql;

show tables;(切换到mysql数据库,查看表)

查看表的结构(以user表为例)

use user;

describe user;

2、创建及其删除库和表(此处以benet库,366班级为例)

创建benet数据库

创建学生表(列:name 数据类型:char (48))、default默认密码字串、primary表示以name做主键

password表示密码为密文)

插入数据并查询

增删改查的语句和sqlserver的语句完全一样,可参考sqlserver语句,这里不再详细演示

五、维护MySQL数据库(重点)

1、数据库用户授权

频繁使用root账号会给服务器带来一定的安全风险,实际工作中,会建立一些低权限的用户,

给予相应的权限,从而使数据库的风险降至最低

REVOKE  权限列表  on  库名.表名  to  用户名@来源地址  identified  by  ‘密码’

权限列表:  增删改查,以逗号分离

库名.表名:可使用通配符“*”,例如使用“benet.*”表示benet数据库中的所有表

用户名@来源地址:谁能连接,从哪里连接;可使用通配符“%”,表示某个区域或网段内所有地址

identified:用户连接数据库时所使用的密码字符串,若省略,则密码为空

实验演示(添加“xiaoming”用户,允许从本机访问,对benet数据库中的所有表具有查询权限,

验证密码为“123456”):

查看权限:show  grants  for 用户名@来源地址

撤销权限:revoke  权限列表  on  数据库名.表名  from  用户名@来源地址

2、数据库的备份与恢复

及时备份数据库时信息安全管理的重要工作内容之一,MySQL数据库备份可采用多种方式

A、可直接备份目录 /usr/local/mysql/var

或B、使用专用备份工具 mysqldump

本章主要讲解MySQL自带的倾倒工具mysqldump为例

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

mysqldump  选项  表名1  表名2  > /备份路径/备份文件名

格式2:导出一个或多个完整的库(含其中的表)

mysqldump  选项  --database  >  /备份路径/备份文件名

格式3:备份MySQL服务器中所有数据库

mysqldump  选项  --databases  >  /备份路径/备份文件名

恢复数据库:mysql  选项  库名  表名  <  /备份路径/备份文件名

实验演示:

格式1(以root的身份,备份benet数据库中的t366表,名为benet-t366.sql)

格式2(以root的身份,备份benet数据库,名为benet.sql)

格式3(以root的身份,备份mysql所有的数据库,名为all-data.sql)

查看备份文件内容(使用grep,less,cat等文本工具可以查看脚本内容)

恢复数据库(删除表t366,然后恢复)

验证导入结果:

实验到此就演示完毕了,希望大家学以致用!谢谢!


本文出自 “一盏烛光” 博客,谢绝转载!

Linux Web网站服务(二)——搭建基于域名的虚拟web主机
Linux 构建LAMP网站平台、部署企业应用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }