MySQL数据库系统
一、MySQL服务基础
【特点】:
多线程、多用户的SQL数据库服务
基于C/S(服务器/客户端)架构
高性能、安全可靠
简单易用
(1)、MySQL的编译安装
MySQL5.x系列版本的使用最为广泛,稳定性、兼容性都不错
1、准备工作
rpm -q mysql mysql-server /先查看下mysql相关软件,并卸载
2、源码编译及安装
【创建运行账户】
Useradd -M -s /sbin/nologin mysql /必须要有mysql程序用户
【解包】
tar zxf mysql-5.1.55.tar.gz -C /usr/src
cd /usr/src/mysql-5.1.55
【配置】
./config --prefix=/usr/local/mysql --with-charset=utf8
--with-collation=utf8_general_ci --with-extra-charset=gbk,gb2312
--prefix:指定将mysql数据库程序安装到哪个目录,如/usr/local/mysql
--with-charset:指定默认使用的字符集编码,应与校对规则相对应
--with-collation:指定默认使用的字符集校对规则,utf8_general_ci是适用于utf-8字符集的通用规则
--with-extra-charset:指定额外支持的其他字符集编码,如gbk、gb2312等
【修改config.h配置文件】
vim /usr/local/mysql-5.1.55/indude/config.h
……//省略部分内容
#define HAVE_CHARSET_gbk 1 /添加相应字符集的编译定义
#define HAVE_CHARSET_gb2312 1
【编译并安装】
make
make install
3、安装后的其他调整为中型数据库
【建立配置文件】
cp support-files/my-medium.cnf /etc/my.cnf
【初始化数据库】
cd /usr/local/mysql/bin/
./mysql_install_db --user=mysql
chown -R root:mysql /usr/local/mysql
chown -R mysql /usrl/local/mysql/var/ var是所有数据库的存放点
【优化执行路径、程序库路径】
ln -s /usr/local/mysql/bin/* /usr/local/bin/
ln -s /usr/local/mysql/lib/mysql/* /usr/lib/
ln -s /usr/local/mysql/include/mysql/* /usr/include/
4、添加系统服务
cd /usr/src/mysql-5.1.55
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod a+x /etc/rc.d/init.d/mysqld /改权限为所有人可执行
chkconfig -add mysqld /添加为系统服务
/etc/init.d/mysqld start /启动mysqld服务
netstat -anpt | grep 3306 /3306为mysqld端口号
(2)、访问MySQL数据库
1、登录到MySQL服务器
MySQL数据库的默认管理员账号为root,密码为空
mysql -u root /-u选项用于指定认证用户
mysql -h 192.168.4.1 -u zhangsan -p /以张三用户登录到其他的服务器
-h:指定目标主机
-p:进行密码校验
mysql -u root -p /当root已设密码时,需要加-p来登录
mysqladmin -u root password “密码” /设置root身份的密码
2、执行MySQL操作语句
验证成功以后将会进入到提示符为“mysql>”的数据库操作环境
每一条mysql语句以分号‘;’表示结果
输入时可以不区分大小写
【查看当前数据库服务的日志文件信息】
show master logs;
3、退出msyql>操作环境
exit或quit
二、使用MySQL数据库
(1)、查看数据库结构
在每一台MySQL服务器中,支持运行多个库
每一个库相当于一个容器,其中存放着许许多多的表
1、查看当前服务器中有哪些库
show databases;
――mysql服务器默认有三个库:test、mysql、information_schema
2、查看当前使用的库有哪些表
首先得使用‘use’语句切换到所使用的库
默认存放点:/usr/local/mysql/var
数据表对应三个文件的后缀名:.frm .MYD .MYI
use mysql; /切换库
show tables; /查看有哪些表
3、查看表的结构
use mysql; /切换库
describe user; /查看user表的结构
(2)、创建及删除库和表
1、创建新的库
create database auth; /auth为库名
2、创建新的表
create table 表名 (字段1名称 类型,字段2名称 类型,…., primary key (主键名));
【例如:在auth库中创建users表】字符长度为16 不能为空
use auth;
create table users (user_name char(16) not null,user_passwd char(48) default’’,primary key (user_name))
主键密码字符长度为48
3、删除一个数据表
【方法一】:drop table auth.users; /指定’库名.表名’作为参数
【方法二】:use auth; /先进入库
drop table users; /后删除表
4、删除一个数据库
drop databases auth; /指定库名即可
(3)、管理表中的数据记录
1、插入数据记录
insert into 表名 (字段1,字段2,......) values(字段1的值,字段2的值);
【例如:在users表中,插入名为zhangsan的家伙,密码为123456】
use auth;
insert into users (user_name,user_passwd) values (‘zhangsan’,password(‘123456’));
《注意》:
写上password时,为密文显示,如不写这一项,此密码是明文显示
2、查询数据记录
select 字段名1,字段名2,......from 表名 where 条件表达式
【例如:查看users表中所有的记录】
select * from auth.users; /通配符*表示所有字段
【例如:查找users表中’zhangsan’的记录,输出其中用户名、密码字段的信息】
select user_name,user_passwd from auth.users wherusername=’zhangsan’
3、修改数据记录
update 表名 set 字段名1=字段值1......where 条件表达式
【例:修改users表中用户名为’lisi’的记录,将密码字串设为空值】
update auth.users set user_passwd=password(‘’) where user_name=“lisi”;
【将数据库用户root的密码设为‘123456’】
update mysql.user set password=password(‘123456’) where user=‘root’;
flush privileges; /刷新用户授权信息
4、删除数据记录
delete from 表名 where 条件表达式
【例:删除users表中用户名为‘lisi’的数据记录】
delete from auth.users where user_name=‘lisi’;
select * from auth.users; /查看一下结果
【删除user表中记段为空的用户记录】
delete from mysql.user where user=‘’;
三、维护MySQL数据库
(1)、数据库的用户授权
1、授予权限
grant 权限列表 on 库名.表名 to 用户名@来源地址 [indentified by ‘密码’]
【grant语句】
专门用来设置数据库的访问权限
当指定的用户名不存在时,grant语句将会创建新的用户
权限列表:用于授权使用的各种数据库操作,以逗号进行分隔,如“select insert update”,用”all”表示所有权限
库名.表名:用于指定授予权操作的库名和表的名称,可以使用通配符“*”,如,使用“auth.*”表示授权操作对象为auth库中的所有表
用户名@来源地址:用于指定用户名称和允许访问的客户机地址,即谁能连接,能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”表示某个区域、网段内的所有地址。例如:%.benet.com,192.168.1.%等
identified by:用于设置用户连接数据库时所使用的密码字符串,在新建用户时,若省略‘indetifiedby’,则用户的密码为空
【例:添加名为xiaoqi的数据库用户,并允许从本机访问,对auth库中的所有表有查询的权限】
grant select on auth.* to ‘xiaoqi’@‘localhost’ indentifiedby ‘12345’;
【例:新建bdqn库,并授权从IP地址为192.168.4.19的主机连接,用户名为aaa,密码为pwd123,允许在ddqn库中执行所有操作】
create databases bdqn;
grant all on bdqn.* to ‘aaa’@‘192.168.4.19’indentified by ‘pwd123’;
2、查看权限
show grants for 用户名@来源地址
【例:查看用户aaa从主机192.168.4.19访问数据库时的授权信息】
show grants for ‘aaa’@‘192.168.4.19’;
3、撤销权限
revoke 权限列表 on 库名.表名 from 用户名@来源地址
【例:撤销用户xiaoqi从本机访问数据库auth的所有权限】
revoke all on auth.* from ‘xiaoqi’@‘localhost’;
show grants for ‘xiaoqi’@‘localhost’;
(2)、数据库的备份与恢复
1、备份数据库
【格式一】:导出指定库中的部分表
mysqldump [选项] 库名 [表名1] [表名2]....> /备份路径/备份文件名
如:mysqldump -u root -p mysql user > mysql-user.sql
【格式二】:导出一个或多个完整的库(包括其中所有的表)
mysqldump [选项] --databases 库名1 [库名2]..> /备份路径/备份文件名
如:mysqldump -u root -p --databases auth > auth.sql
【格式三】:备份mysql服务器中所有的库
mysqldump [选项] --all-databases > /备份路径/备份文件名
如:mysqldump -u root -p --opt --all-databases > all-data.sql
【选项含义说明】:
-u:指定数据库用户名
-p:指定数据库密码
--opt:以优化执行速度
【查看备份内容】
#使用grep、less、cat等文本工具可以查看脚本内容
#grep -v “^- -” auth.sql | grep -v “^/” |grep -v “^$”
2、恢复数据库
mysql [选项] [库名] [表名] < /备份路径/备份文件名
【例如:从备份文件mysql-user.sql中将表导入到test库】
mysql -u root -p test < mysql-user.sql
【若恢复完整的库,则执行导入时无需指定库名】
cd /usr/local/mysql/var/
mysql -u root -p < all-data.sql