MYSQL
数据库的基本管理
1.
登陆
MySQL
环境
在成功登陆到
MySQL
环境中,输入的每一条数据库管理命令以分号“;”表示结束,可以不区分大小写
(
但习惯上将
SQL
语句中的关键字使用大写
),
输入“
exit
”即可退出
MySQL
环境。
对于刚初始化的
MySQL
数据库服务器来说,其管理员账号
root
默认是没有设置密码的(针对
MySQL
服务器来说,而不是
Linux
本机)。
1
)本地连接MySQL数据库
[root@web ~]# mysql -u root
|
为了安全起见,可以使用
mysqladmin
命令工具为
MySQL
数据库的
root
用户设置一个密码。
[root@web ~]# mysql -u root -p
|
2
)远程连接
MySQL
数据库
Ø
要有远程访问
MySQL
服务器权限
Ø
本地客户端可以执行
mysql
命令(需要安装相应软件包)
[root@web ~]# mysql –h IP
地址
-u
用户
–p
用户密码
|
2.
显示数据库结构
——
SHOW DATABASES
语句
1
)查看
MySQL
服务器中包含的数据库列表
经初始化后的
MySQL
服务器,默认建立了
3
个数据库:
Test
、mysql和information_schema
mysql> show databases;
|
2)
查看数据库中的数据表——
SHOW TABLES
语句
在显示数据表之前,需要使用“
USE
”语句切换到指定数据库
mysql> use test;
Database changed
mysql> show tables;
|
3)
显示数据表结构——
DESCRIBE
语句
显示数据表列的信息(或叫表结构),以“数据库名
.
表名”命令参数
mysql> DESCRIBE mysql.user;
|
3.
数据库创建和删除
1
)创建新的数据库——
CREATE DATABASE
语句
创建数据库需要有足够的权限
mysql> create database haha;
|
2
)创建新的数据表——
CREATE TABLE
语句
例:在
haha
数据库中新建一个名为
users
的表。包括
2
个字段
username
、
userpasswd
,均为非空字符串值,初始化密码值为
123.com
,其中
username
字段被设置为关键索引字段(
PRIMARY KEY
)。
mysql> use haha;
Database changed
mysql>create table users (username char(30) not null, userpasswd char(20) not null default '123.com',primary (username));
|
3
)删除一个数据表——
DROP TABLE
语句
mysql> drop table haha.users;
|
4)
删除一个数据库——
DROP DATABASE
语句
mysql> drop database hehe;
|
4.
数据的写入和维护
1)
插入新的数据记录——
INSERT
语句
INSERT INTO
表名
(
字段
1
,字段
2
,
…) VALUES(
字段
1
的值,字段
2
的值,
…)
|
例:在
haha
数据库的
users
表中出入一个用户
zs
记录,密码为
zs.com
(使用
encrypt
可将密码加密)
mysql> insert into users (username,userpasswd) values('ls',encrypt('123'));
|
2)
查询数据记录——
SELECT
语句
SELECT
字段名
1
,字段名
2,… from
表名
where
条件表达式
|
3)
修改数据记录——
UPDATE
语句
UPDATE
表名
SET
字段名
1=
字段值
1
,字段名
2=
字段值
2 where
条件表达式
|
例:使用更改数据库用户
haha
的密码,更改后执行“
FLUSH PRIVILEGES
”语句刷新用户授权信息。
update mysql.user set password=password('123456') where user='haha’;
flush privileges
|
4)
删除数据记录——
DELETE
语句
DELETE from
表名
where
条件表达式
|
5.
数据库的备份和恢复
①
备份数据库
方法一
:
直接备份数据库目录“
/usr/local/mysql/var
”
mkdri /backup
cd /bakcup
tar czf mysql.tar.gz /usr/local/mysql/var
|
方法二
:
使用
mysqldump
命令将数据库信息导出为
SQL
脚本文件,它能在不同版本的
MYSQL
服务器上使用。如:当需要升级
MySQL
数据库软件的版本时,使用
mysqldump
命令将原来数据库信息导出,直接在更新后的
MySQL
服务器中导入即可。
mysqldump -u
用户
-p [
数据库名
] [
表名
] >/
备份路径
/
备份文件名
|
例
1
:备份数据库
mysql
中的
user
表、
host
表
mysqldump -u root -p mysql user host> mysql.spl
|
例
2
:备份
MySQL
服务器中所有数据库的内容(添加“
—all-databases
”选项),当需要备份的信息较多时,可以添加“
—opt
”选项进行优化,以加快备份速度。
mysqldump -u root -p --all-databases > mysql-all.sql
|
②
恢复数据库——
mysql
命令
mysqldump -u root -p [
数据库名
] < /
备份路径
/
备份文件名
|
例
1
:备份文件包括所有的(或多个)数据库信息时,执行
mysql
导入时可以不指定数据库名。
mysql -u root –p < /backup/mysql-all.sql
|
例
2
:备份文件只包含单个数据库或单个数据表时,执行
mysql
导入时需要指定数据库的名称。
mysql -u root –p haha< /backup/haha_users.sql
|
6.
用户及权限设置
我们频繁使用
root
账户对
MySQL
数据库服务器操作,会带来一定的安全风险。在实际工作中,通常会建立一些专门的用户,只负责特定数据库、表的管理和维护,从而将权限限制在一定的范围内。
1
)授予权限
GRANT
语句——用来创建用户并进行授权的最常用语句
Ø
当指定用户名不存在时,
GRANT
语句将会自动创建新用户;
Ø
当指定用户名存在时,用于修改用户信息。
GRANT
权限列表
ON
数据库名
.
表名
TO
用户名
@
来源地址
[IDENTIFIED BY ‘
密码
’]
|
u
权限列表:使用“
All
”关键字代表全部权限,同时授予多个权限时,以逗号“,”分隔。如
”select,update”
。
u
表名:可使用通配符“
*
”表示指定数据库中的所有数据表
u
用户名
@
来源地址:用来设置以谁的身份可以连接,从哪里连接(本地或远程)。用户名不能使用通配符,但可以使用两个单引号“‘’”表示空字符串,用于匹配任何用户。来源地址表示连接数据库的客户机地址,可使用“
%
”作为通配符,匹配某个域内的所有地址(如
%.benet.com
),或使用带掩码标记的网络地址。
u
IDENTIFIED BY
:用于设置用户连接数据库时使用的密码字符串,密码经过加密后存储于
mysql
库的
user
表中,省略
DENTIFIED BY
部分时,新用户的密码将为空。
例
1
:授权数据库用户
haha
,允许其从网段
172.16.100.0/16
中访问
MySQL
服务器,可以更新
auth
库的
users
表,使用密码“
123.com
”进行验证。
GRANT select ON auth.users TO haha@'172.16.100.0/24' identified by '123.com';
|
2
)查看权限
Ø
使用
select
语句对
user
、
db
、
host
数据表进行查询
Ø
使用
show
语句进行查看,相对更加简单
SHOW GRANTS FOR
用户名
@
‘域名’或‘
IP
’或‘
localhost
’
|
3
)撤销权限
REVOKE
语句——用于撤销指定数据库用户的权限
REVOKE
权限列表
ON
数据库名
.
表名
FROM
用户名
@
域名或
IP
|
附加说明:
1.MySQL
数据库的数据文件存储在目录“
/usr/local/mysql/var/
”中,每个数据库对应一个目录,用于存储数据表文件。每一个数据表对应为
3
个文件,后缀名分别为“
.frm
”、“
.MYD
”和“
.MYI
”
.
[root@web ~]# ls /usr/local/mysql/var/mysql |grep user
user.frm
user.MYD
user.MYI
|
2.
操作的一些技巧
2.1
如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就
OK
。
2.2
你可以使用光标上下键调出以前的命令。但以前有的
MYSQL
旧版本不支持。
2.3
为了避免使用SQL语句操作大量数据的复杂,可以将需要的数据写入到一个文件中,然后使用数据传入命令将其传入到数据库的相应表中,在执行命令之前
你最好将文件复制到/usr/local/mysql/bin/目录下,并且要先用use命令打开MySQL服务器所在的数据库 。
不过某些版本不支持该命令。
load data local infile
“文件名” into table 表名;