Chinaunix首页 | 论坛 | 博客
  • 博客访问: 184843
  • 博文数量: 39
  • 博客积分: 2604
  • 博客等级: 少校
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 13:32
文章分类

全部博文(39)

文章存档

2010年(1)

2009年(16)

2008年(22)

分类: Mysql/postgreSQL

2009-09-01 16:47:26

MYSQL服务器的安装和管理

 

一.           MYSQL的安装(如果有了,可以不用装)

1. mysql-5.0.18.tar.gz复制到/usr/local后,解压

   Tar –zvxf mysql-5.0.18.tar.gz

2. 进入MYSQL的安装目录进行安装

   ./configure –prefix=/usr/local/mysql

3 . make && make install

4. 安装完毕后,以管理员root身份进入安装目录/usr/local/mysql下,使用下面命令安装mysql默认的数据表。

   bin/mysql_install_db  --user=mysql

  5.创建权限并启动

     chown  –R root  .

     chown  -R mysql var

     chgrp   -R mysql  .

     bin/mysqld_safe  --user=mysql &

 6. 如果需要开机启动的话,就添加到/etc/rc.local文件中

/usr/local/mysql/bin/mysqld_safe  --user=mysql

 

二.           MYSQL数据库的管理

前提:建立数据库,数据库名字为person,并在其中建立一张名字为basicinfo的表记录个人的基本信息,包括学号、名字、性别、住址、电话等信息。另外,还需要为MYSQL数据库的管理员设置密码,并在basicinfo表的名字字段上建立索引。

1MYSQL管理员密码修改和登录

   如果是第一次安装MYSQL,访问数据库服务器的用户只能是管理员(即root用户)。

默认情况下root的初始密码为空,本地连接MYSQL是输入mysql即可。如果要修改

MYSQL管理员密码,需要先退出MYSQL命令状态,然后在使用下面命令。

#cd mysql/bin  

# ./mysqladmin –u root password 123456

 

如果要以管理员root的身份连接到本机MYSQL,可以用以下命令

 mysql –u root –p

 

2. 数据库的创建和删除

A.    创建一个名为person的数据库

                     Mysql>create database person;

            B 查看刚才创建的数据库 show databases;

           C 删除数据库 drop database 数据库名;

 

3. 表的创建、复制、删除和修改

A.    选择要创建表的数据库 use person;

B. 建表basicinfo

mysql>Create   table   basicinfo  (

            no   varchar(7)   not   null,

           name   varchar(20)   not   null,

           sex   char(1)   default   'm',

           birthday   date,

           phonenum   varchar(15),

           address   varchar(30)

           );

创建basicinfo表后,可以describe命令查看所建表的结构。具体命令格式如下:

   mysql> describe basicinfo;

C.为了方便用户创建新表,Mysql提供了复制表结构的功能。可以使用下面SQL命令来复制表结构:

         create table 新表名称 like 源表名称;

D.    删除数据库中一个或多个表的命令,命令格式如下:

         drop table 表名称1[,表名称2…];

E. 修改表的结构,比如:增加、删除或修改表中字段,更改表的名称、类型,创建、撤消索引,等等,则可以使用alter命令,命令格式如下:

          alter table 表名称 更改动作1[,更改动作2…];

  例如若要将表basicinfoaddress字段的类型从varchar(30)变为varchar(35),则可

  以使用下列命令:

      Mysql> alter table basicinfo modify address varchar(35);

         若要在表basicinfo中增加一个字段email,则可以使用下列命令:

            Mysql> alter table basicinfo add email varchar(20);

         若要将表basicinfo phonenum字段的名称变为cellphone,且将该字段类型改为 

        varchar(15),则可以使用下列命令:

            Mysql> alter table basicinfo change phonenum cellphone varchar(15);

         若要在表basicinfo中删除一个字段email,则可以使用下列命令:

           Mysql> alter table basicinfo drop email;

        若要将表basicinfo的名称改为infomation,则可以使用下列命令:

            Mysql> alter table basicinfo rename to information;

 

4. 表中数据的插入、删除和修改

建立数据库和表后,紧接着就是在表中存储数据。在MYSQL中,通常使用数据操作语言(DML)来插入、删除和修改表中记录。

A.    数据的插入命令,命令的格式如下:

     insert into 表名称(字段名1,字段名2…)

     values (字段1的值,字段2的值,…);

例如要在表infomation中插入一组数据,可以使用下列命令:

 Mysql> insert into information (no,name,sex,birthday,cellphone,address)

       values (‘0081’,’YY’,’f’,’2009-01-01’,’010-51816928’,’beijing’);

做完后可以用select查看一下情况:select  * from information;

insert命令还可以连续插入多条记录,比如要在表infomation中插入两条记录,可以使用下面insert的缩写命令格式:

 Mysql> insert into information values

       (‘0071’,’YY’,’f’,’2009-02-02’,’010-51816928’,’beijing’)

      (‘0099’,’TT’,’f’,’2009-09-09’,’010-51816929’,’beijing’)

B.表中数据的修改命令,它用于表中数据的更新,命令格式如下:

update 表名称 set 字段名1=字段值1[,字段名2=字段值2…]

where 条件表达式;

若要修改表infomationno字段值为0071的记录,将其对应的birthday值改为2009-03-03cellphone的值改为010-88888888,可以使用下列命令:

Mysql>update infomation set birthday=20090303,cellphone=’010-88888888’ where no=’0071’;

查看修改的用 select * from information where no=’0071’;

C.删除表中的数据,命令格式如下:

       delete from 表名称 where 条件表达式;

   若要删除表infomationno字段值为0099的记录,可以使用以下命令:

       Mysql>delete from infomation where no=’0099’;

   查看修改的用 select * from information .

 

5. 索引的创建和删除

MYSQL提供了创建和删除索引的命令,使用create index命令语句可以向已经存在的表中添加索引,其基本命令格式如下:

    Create [unique] index 索引名 on 表名称 (字段名1[(长度)];

若要为表infomationnama字段创建名为iname的索引,可以使用下列命令格式:

    Mysql>create index iname on infomation (name);

 

Drop index命令语句用于删除索引,其基本命令格式如下:

    Drop index 索引名 on 表名称;

若要删除表infomation中名为iname的索引,可以使用下列命令格式:

    Mysql>drop index iname on information;

 

三.           MYSQL服务器的用户管理

前提:对了对person数据库进行管理,需要建立一个名字为guest的用户,允许该用户从任意主机都能登录,并对它赋于一定权限,使其可以对person数据库进行一切操作,具备与管理员对person数据库一样的权限。

1. MYSQL服务器的访问控制

   首次安装mysql时,安装程序会在数据库mysql中设置5个授权表,即userdbhosttables_privcolumnts_priv。这五个表共同决定可以连接到数据库服务器的用户、从那连接以及其可以执行的操作。在初始化后,有3个表(hosttables_privcolumnts_priv)为空,则userdb这两个表就决定了MYSQL的默认访问规则。

 

2. 用户的创建和删除

   User表从用户角度规定了用户帐户的权限,若要查看MYSQL数据库中表user前四个字段的内容,可以使用下列命令格式:

     Mysql>select host,user,password,select_priv from mysql.user;

 db表规定了数据库的被访问权限,若要查看MYSQL数据库中表db前四个字段的内容,可以使用下列命令格式:

     mysql>select host,db,user,select_priv from mysql.db;

那么如何为数据库开放一个用户,使其可以从任意主机连接到数据库服务器啦?若要创建一个新用户guest满足上述要求,可以使用下列命令:

    Mysql>insert into mysql.user (host,user,password)

          Values (‘%’,’guest’,password(‘guest’));

这里需要用到password()函数为密码加密,这样表userpassword字段中保存的就是加密过的密码。命令执行结果后,可以用

      Mysql>select host,user,password,select_priv from mysql.user; 查看到user表中已经成功添加了guest用户。

 接下来需要重载MYSQL授权表,可以使用下列命令实现:

     Mysql>flush privileges;

 Guest用户创建成功后,就可以从远程客户端使用下列命令连接数据库服务器,进而用来测试新的用户是否可用。

     Mysql –h 服务器的IP –u guest –p

在用户正确输入密码后,就可以成功连接到数据库服务器了。使用命令show databases可以查看用户当前可以使用的数据库。

   如果要关闭远程主机连接数据库服务器的功能,只需删除用户guest即可,可以使用下列命令实现:

     Mysql>delect from mysql.user where user=’guest’;

 删除后需要用命令flush privileges重载MYSQL授权表,命令执行后,再用

     Mysql>select host,user,password,select_priv from mysql.user; 查看。

 

3. 用户权限的授予和撤消

   为方便地管理用户的权限,MYSQL数据库提供了授予和撤消用户权限的命令,如下例子:

   若要授予用户guest可从任意主机连接到数据库服务器,并可完全访问person数据库的权限,可以使用下列命令:

       Mysql>grant all on person.* to guest@’%’  identified by ‘guest’;

 然后用Mysql>select host,db,user,select_priv from mysql.db;查看

 

若要新建一个用户lab,使其可以从子网172.18.12.0中任何主机连接到数据库服务器,进而可读取person数据库内容,可使用下列命令格式:

   Mysql>grant select on person.* to ’ identified by ‘grid’;

这条命令表示,lab用户以grid为密码可以从子网172.18.12.0中的任何主机连接到数据库服务器,并可以访问person数据库。然后用Mysql>select host,db,user,select_priv from mysql.db;查看。

可以使用下列命令查看表mysql.user中与用户lab有关的记录,以检验上一条命令:

Mysql>select host,user,password,select_priv from mysql.user where user=’lab’;

命令执行后,mysql创建了用户lab并设置了密码,lab可以从子网172.18.12.0/24中任一主机连接到数据库服务器,但授权表user中与lab对应的用以设置全局权限的各个字段值都为Nselect_priv字段),所以,MYSQL并没有授予lab任何全局权限。

查看表mysql.db中与用户lab相关的记录可以使用如下命令:

    Mysql>select host,db,user,select_priv from mysql.db;

命令执行后可以用Mysql>select host,db,user,select_priv from mysql.db;查看。但查看到,授权表db中与用户lab对应的用以设置权限的select_priv字段值为Y,所以用户lab有权限浏览数据库person中的内容。

除了创建新用户以外,还可以对已有用户的权限进行变更。若要授予用户guest从本地连接到数据库服务器并对person数据库可完全访问的权限,且可以将其所有权限授予别的用户,则可使用下列命令:

Mysql>grant all on person.* to guest@localhost identified by ‘guset’ with grant option;

命令执行为用户guest授权后,可以使用下列命令检查授予该用户的权限:

  Mysql>show grants for guest@localhost;

与上一命令相反,若要撤消用户guest@localhostperson数据库所有的创建、删除数据库的权限,可以使用下列命令:

 Mysql>revoke create,drop on person.* from guest@localhost;

 

注意:

    MYSQL提供了两种修改授权表中访问权限的方法:一是用INSERTUPDATEDELETEDML语句来修改信息;二是用GRANTREVOKE语句。第一种方法虽然直观,但各授权表中字段数很多,容易出错,所以通常使用第二种。

阅读(1376) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~