MySQL数据库详解

来源:互联网 发布:java的configuration 编辑:程序博客网 时间:2024/05/16 19:54

从本篇博文开始,我们就要深入到PHP的应用当中去了。PHP的数据库应用是重中之重,必须掌握。选择什么样的数据库呢,当然是我们的MySQL啦,没有人会去使用那些庞大、低效而又昂贵的商业数据库来构建PHP应用吧。

1 MySQL数据库的安装


过去,安装一个MySQL数据库并且要启动起来很费事,特别是在Linux这样的开发环境下,需要更新很多类库或者其他东东。不过,现在有了LAMP架构,一切尽在掌握!

请从 Apache Friends Web 站点上下载最新的二进制文件并进行解包:
xampp-linux-1.7.3.tar.gz。

http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/1.7.3/xampp-linux-1.7.3.tar.gz/download

使用下面的命令将其解开到 /opt 目录中:
tar xvfz xampp-linux-1.7.2.tar.gz
解压后出现lampp文件夹,一定要将lampp放到/opt 下面(否则不能启动)。现在所有的软件都已经安装好了,让我们启动新的守护进程。将当前的工作目录切换到 /opt/lampp ( cd /opt/lampp)并输入下面的命令:
./lampp start

启动起来后,我们就可以使用其中的MySQL模块了:
# cd /opt/lampp/bin
# ./mysql
mysql>

2 修改mysql密码


# ./mysqladmin -u root password 'new-password'
格式:mysqladmin -u用户名 -p旧密码 password 新密码

例1:给root加个密码123456。
  键入以下命令 :
   /opt/lampp/bin/mysqladmin -u root password 123456
  注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。测试是否修改成功:

1)不用密码登录
# ./mysql

2)用修改后的密码登录
# ./mysql -u root -p
  Enter password: (输入修改后的密码123456)
  Welcome to the MySQL monitor. Commands end with ; or /g.
  Your MySQL connection id is 4 to server version: 4.0.16-standard
  Type 'help;' or '/h' for help. Type '/c' to clear the buffer.
  mysql>
  成功!

3)退出mysql命令:exit(回车)

3 数据库和表的操作


mysql> show databases;
  显示如下信息:
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| cluster_replication |
| mysql               |
| test                |
+---------------------+
4 rows in set (0.06 sec)
mysql库非常重要,它里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。

mysql> show tables;
显示本库里的所以表

describe 表名;
例如:mysql>  described db;

select *from 表名;
例如:显示mysql库中db表中的纪录。所有能对MySQL用户操作的用户都在此表中。
mysql>  select *from db;

mysql> create database 库名;
例如:创建一个名字为aaa的库:
mysql> create database aaa;

use 库名;
create table 表名 (字段设定列表);

例如:在刚创建的aaa库中建立表name,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
use aaa;
mysql> create table testtable (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
可以用describe命令察看刚建立的表结构。
mysql> describe testtable ;

显示如下:
    +-------+---------+------+-----+---------+----------------+
  | Field | Type  | Null | Key | Default | Extra     |
  +-------+---------+------+-----+---------+----------------+
  | id  | int(3) |   | PRI | NULL  | auto_increment |
  | xm  | char(8) | YES |   | NULL  |        |
  | xb  | char(2) | YES |   | NULL  |        |
  | csny | date  | YES |   | NULL  |        |
  +-------+---------+------+-----+---------+----------------+

例如:增加几条相关纪录。
  mysql> insert into testtable values('','张三','男','1971-10-01');
  mysql> insert into testtable values('','白云','女','1972-05-20');
  可用select命令来验证结果。
  mysql> select*from testtable ;

又例如:将张三的出生年月改为1971-01-10
  mysql> update testtable set csny='1971-01-10' where  xm='张三';

例如:删除张三的纪录。
  mysql> delete from testtable where  xm='张三';

将表中记录清空:
delete from 表名;

删库和删表:
drop database 库名;
drop table 表名;

4 增加删除MySQL用户及修改密码


增加MySQL用户

这部分的操作需要ROOT权限,需要以ROOT身份登录。

格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

//登录MYSQL(有ROOT权限)以ROOT身份登录.
/opt/lampp/bin/mysql -u root -p
密码
//首先为用户创建一个数据库mydb
mysql>create database mydb;
//授权user_0用户拥有mydb数据库的所有权限。
mysql>grant all privileges on mydb.* to user_0 @localhost identified by '1234';
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作

如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on mydb.* to user_0@localhost identified by '1234';
//刷新系统权限表。
mysql>flush privileges;
例1、增加一个用户user_1密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:

grant select,insert,update,delete on *.* to user_1@"%" identified by "123";

例1增加的用户是十分危险的,如果知道了user_1的密码,那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了,解决办法见例2。

例2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录,并可以对数据库aaa进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能通过MYSQL主机来操作aaa库。

grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";

用新增的用户如果登录不了MySQL,在登录时用如下命令:

mysql -u user_1 -p -h 192.168.127.128 (-h后跟的是要登录主机的ip地址)

删除用户


mysql -u root -p
    密码
    mysql>delete from user  where  user="user_0" and host="localhost";
    mysql>flush privileges;
    / /删除用户的数据库
    mysql>drop database mydb;


修改指定用户密码


mysql -u root -p
    密码
    mysql>update mysql.user set password=password('新密码') where user="user_0" and      host="localhost";
    mysql>flush privileges;

查看所有用户


select user,host,password from mysql.user;
显示:
+--------+-----------+-------------------------------------------+
| user   | host      | password                                  |
+--------+-----------+-------------------------------------------+
| root   | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root   | mds1      |                                           |
|        | mds1      |                                           |
|        | localhost |                                           |
| user_0 | localhost | *A4B6157319038724E3560894F7F932C8886EBFCF |
+--------+-----------+-------------------------------------------+
5 rows in set (0.00 sec)

5 将文本数据转到数据库中


文本数据应符合的格式:字段数据之间用tab键隔开,null值用/n来代替.

例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
  
数据传入命令 load data local infile “文件名” into table 表名;

注意:你最好将文件复制到/mysql/bin目录下,并且要先用use命令打表所在的库 。

6 备份数据库


我们用mysqldump制作整个数据库的一个备份:

/opt/lampp/bin/mysqldump --opt database > backup-file.sql

将数据库如school备份到backup-file.sql文件,backup-file.sql是一个文本文件,文件名任取。当它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:

/opt/lampp/bin/mysqldump --opt database | mysql --host=remote-host -C database

由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:

/opt/lampp/bin/mysqladmin create target_db_name
/opt/lampp/bin/mysql target_db_name < backup-file.sql

原创粉丝点击