MySQL数据库系统

7-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表】


      use auth;


create  table users (user_name char(16) not null,user_passwd  char(48) default’’,primary  key (user_name))

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 whereusername=’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



你可能感兴趣的:(linux,mysql,SQL数据库)