安装并管理MySQL数据库
安装与启动控制
1.安装MySQL
创建运行MySQL数据库的系统用户、组(如果已存在,则无需重新创建)
# useradd -M -s /sbin/nologin mysql
解压并释放源码包,并切换至展开的源码包目录
# tar zxvf mysql-5.0.56.tar.gz -C /usr/src
# cd /usr/src/ mysql-5.0.56
使用 ./configure命令预配置编译选项
# ./configure - - prefix=/usr/local/mysql
编译安装
# make
# make install
安装后的调整
建立配置文件(support-files文件下,提供了多个MySQL服务器配置样例,用于不同负载的数据库服务器)
# cp support-files/my-medium.cnf /etc/my.cnf
初始化数据库(以mysql用户身份执行mysql_install_db脚本,对MySQL数据库进行初始化,修改相关目录的所有权限,以便mysql用户可以读写数据库)
# /usr/local/mysql/bin/mysql_install_db - - user=mysql
# chown -R root.mysql /usr/local/mysql
# chown -R mysql /usr/local/mysql/var
调整lib库路径(由于MySQL安装到了非标准的路径中,所以还需要将MySQL的库文件路径/usr/local/mysql/bin/mysql加入到系统的库文件搜索路径中,以便在用到时能够自动搜索到,增加文件搜索路径可以通过修改/etc/ld.so.conf文件实现
# echo “/usr/local/mysql/bin/mysql” >> /etc/ld.so.conf
# ldconfig
2.MySQL启动控制
使用mysql_safe脚本安全启动服务器
# /usr/local/mysql/bin/musql_safe - -user=mysql &
# netstat -ntpl | grep 3306
将mysql添加为系统服务
在展开的MySQL源码目录中的support-files文件夹下,mysql.server文件可用来作为mysqld服务的启动脚本,将其复制到/etc/init.d目录下,并添加执行权限,使用 - -add选项的checkconfig命令将其设置为自动启动服务器即可
# cd /usr/src/mysql-5.0.56
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod x /etc/init.d/mysql
# chkconfig - -add mysql
# chkconfig mysql on
设置MySQL程序的执行路径
# export PATH=$PATH:/usr/local/mysql/bin
# echo “PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile
数据库基本管理
1.登录及退出MySQL环境
在MySQL环境中每条数据库管理命令以分号 “;”结束
# mysql -u root //对于刚初始化完毕的MySQL数据库来说,其管理员账户默认是root,没有密码
# exit 退出
# mysqladmind -u root password “p@ssw0rd”
# mysql -u root -p //注意该root用户是访问mysqld服务的,不是Linux系统的root
2.显示数据库结构
mysql> show datebases //默认建立的三个数据库test、mysql、information_schema
mysql> use mysql ; //应用数据库
mysql> show tables; //查看数据表信息
MySQL数据库的数据文件存储目录 /usr/local/mysql/var/ 中,每个数据库对应一个目录,用于存储数据表文件,每一个数据表对应三个文件,后缀名分别为 .frm .MYD .MYI
# ls /usr/local/mysql/var/mysql | grep user
mysql> use mysql ;
mysql>describe mysql.user ; //查看数据表结构
3.数据库的创建与删除
mysql> create database auth ; //创建新的数据库 create database 数据库名;
mysql> create table users (user_name char(30) not null, user_passwd char(20) not null default ‘123456’ ,primary key (user_name) );
//在数据库auth总创建表users; create table 表名 (定义字段…….)
mysql> drop table auth.users ; //删除一个数据表 drop table [数据库名.]表名
mysql> drop database auth ; //删除一个数据库 drop database 数据库名
4.数据录入与维护
insert 插入新的记录
insert into 表名 (字段1,字段2…….) values (字段值1,字段值2………)
select 查询语句
select 字段名1,字段名2……… from 表名 where 条件表达式
update修改记录
update 表名 set 字段名1=字段值1,字段名2=字段值2 where 条件表达式
Flush privileges ; //刷新用户授权信息
delete删除数据记录
delete from 表名 where 条件表达式
为安全起见,建议删除MySQL的空用户
注:以上图片上传到红联Linux系统教程频道中。
维护数据库及用户权限
1.数据库的备份与恢复
备份数据库(直接备份/var/local/mysql/var是一种比较快捷的方式,而更广泛使用的做法是使用mysqldump命令完成备份)
mysqldump -u 用户名 -p [密码] [options] [数据库名] [表名] > /备份路径/备份文件名
# mysqldump -u root -p auth > mysql-auth.sql //备份整个auth数据库
# mysqldump -u root -p mysql host user > mysql.host-user.sql
//备份数据库mysql中的host 表.user表
# mysqldump -u -root -p - -all-databases > mysql-all.sql
//备份服务器中所有数据库内容
恢复数据库
mysql -u -root -p [数据库名] < /备份路径/备份文件名
# mysql -u root -p < mysql-all.sql
//因为mysql-all,sql包含所有数据库信息,所以可以不指定数据名
# mysql -u -root -p < mysql-auth.sql
# mysql -u -root -p auth < mysql-auth.sql
# mysql -u -root -p mysql < mysql.host-user.sql
//备份文件只包含单个数据库或表时,执行mysql导入时需要指定目标数据库名称
2.用户权限设置
授予权限
grant 权限列表 on 数据库名.表名 to 用户名@来源地址 identified by 密码
权限列表 使用all 关键字代表全部权限,同时授予多个权限时,以逗号分开
表名 可以使用通配符 * 表示指定数据库中的所有数据表
用户名@来源地址 用来设置谁能连接,从哪连接,用户名不能使用通配符,但是可以使用两个连续的单引号 ‘’ 表示空字符串,可以用于匹配任何用户,来源地址表示连接数据的客户机地址,可使用%作为通配符,匹配某个域内的所有地址%.benet.com,或使用带掩码标记的网络地址 192.168.1.0、24.
Identified by 用于设置用户连接数据库时使用的连接字符串,密码经过加密后存储于mysql库中user表中,省略时,密码部分为空
例:
mysql>grant select on mysql.user to wang@’localhost’ identified by ‘123’;
mysql> grant all on auth.* to admin@’localhost’ identified by ‘123’;
mysql>grant select on auth.* to admin2’192.168.10.0/24’ identified by ‘123’
查看权限
show grants for 用户名@域名或IP
mysql>show grants for root@’localhost’;
mysql>show grants for admin3@’%.benet.com’;
撤销权限
revoke 权限列表 on 数据库名.表名 from 用户名@域名或IP
mysql> revoke all on auth.* from admin3@’%.benet.com’;
mysql> show grants for admin3@’%.benet.com’;