分类: Mysql/postgreSQL
2009-09-01 16:47:26
MYSQL服务器的安装和管理
一. MYSQL的安装(如果有了,可以不用装)
1. 将mysql-
Tar –zvxf mysql-
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表的名字字段上建立索引。
1.MYSQL管理员密码修改和登录
如果是第一次安装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,…];
例如若要将表basicinfo中address字段的类型从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 (‘
做完后可以用select查看一下情况:select * from information;
insert命令还可以连续插入多条记录,比如要在表infomation中插入两条记录,可以使用下面insert的缩写命令格式:
Mysql> insert into information values
(‘
(‘
B.表中数据的修改命令,它用于表中数据的更新,命令格式如下:
update 表名称 set 字段名1=字段值1[,字段名2=字段值2,…]
where 条件表达式;
若要修改表infomation中no字段值为0071的记录,将其对应的birthday值改为
Mysql>update infomation set birthday=20090303,cellphone=’010
查看修改的用 select * from information where no=’
C.删除表中的数据,命令格式如下:
delete from 表名称 where 条件表达式;
若要删除表infomation中no字段值为0099的记录,可以使用以下命令:
Mysql>delete from infomation where no=’
查看修改的用 select * from information .
5. 索引的创建和删除
MYSQL提供了创建和删除索引的命令,使用create index命令语句可以向已经存在的表中添加索引,其基本命令格式如下:
Create [unique] index 索引名 on 表名称 (字段名1[(长度)],…);
若要为表infomation的nama字段创建名为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个授权表,即user、db、host、tables_priv、columnts_priv。这五个表共同决定可以连接到数据库服务器的用户、从那连接以及其可以执行的操作。在初始化后,有3个表(host、tables_priv、columnts_priv)为空,则user、db这两个表就决定了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()函数为密码加密,这样表user的password字段中保存的就是加密过的密码。命令执行结果后,可以用
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对应的用以设置全局权限的各个字段值都为N(select_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@localhost对person数据库所有的创建、删除数据库的权限,可以使用下列命令:
Mysql>revoke create,drop on person.* from guest@localhost;
注意:
MYSQL提供了两种修改授权表中访问权限的方法:一是用INSERT、UPDATE、DELETE等DML语句来修改信息;二是用GRANT和REVOKE语句。第一种方法虽然直观,但各授权表中字段数很多,容易出错,所以通常使用第二种。