1.1 MySQL简介
MySQL服务概述
MySQL是当前开源数据库中最受欢迎SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。
MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。
许可费用方面,MySQL的普及很大程度上源于它的宽松,除了略显不寻常的许可费用。MySQL的价格随平台和安装方式变化。MySQL的Windows版本(NT和9X)在任何情况下都不免费,而任何Unix变种(包括Linux)的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方安装则必须付许可费。
1.2 MySQL服务安装与配置
这里将以MySQL源码包在RedHat AS4上安装配置来进行讲解,在其他操作系统上的源码包安装都与此类似。
1.2.1 获取MySQL
目前MySQL的最新稳定发行版本是5.0.33,可以在其官方下载地址 sql/downloads/mysql/5.0.html下载到。
注意:要到页面最下方的源码包(Source downloads)Tarball ()
在这个页面我们还可以看到许多其他为特定操作系统版本编译好的MySQL安装包,可以针对特定操作系统无需安装直接运行。
1.2.2 安装准备工作
首先要检查操作系统是否安装了所需要的软件包,因为这里安装的的是源码包因此要确认是否操作系统是否安装了C语言编译环境(gcc, libgcc等)
在命令行下以root身份查看是否正确安装gcc
[root@as4 /]# rpm -aq|grep gcc
gcc-objc-3.4.3-9.EL4
compat-libgcc-296-2.96-132.7.2
compat-gcc-32-c++-3.2.3-47.3
libgcc-3.4.3-9.EL4
gcc-3.4.3-9.EL4
此外,还要防止操作系统原有的MySQL包对新安装的MySQL造成影响,因此不要让系统自带的MySQL影响到新安装的MySQL,首先要卸载系统自带的MySQL(注意:一般来说RedHat的发行版中带的MySQL都不是最新版本)。我们可以通过以下步骤卸载系统自带的MySQL。
1)[root@as4 /]# rpm -aq|grep mysql
mysql-4.1.12-3.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1… w3cschool实战
2) [root@as4 ]# rpm -e mysql-4.1.12-3.RHEL4.1…
1.2.3 开始安装
把获得的MySQL源码包mysql-5.0.复制到/opt目录下开始解压
[root@as4 /]# cd /opt/
[root@as4 opt]# tar zxvf ./mysql-5.0.
为MySQL创建独立用户,一般来说这种独立运行的数据库都要创建一个独立的系统用户,有些数据库是必须要独立系统用户的。
[root@as4 /]# useradd mysql -d /opt/mysql-5.0. 33
[root@as4 /]# chown -sql /opt/mysql-5.0. 33
创建2个重要目录(数据和连接)
数据目录用于存放MySQL
的所有数据,而连接目录是存放MySQL运行时的socket文件 
[root@as4 /]# su – mysql 先切换到mysql用户
[mysql@as4 ~]$ mkdir ./data
[mysql@as4 ~]$ mkdir ./tmp
开始预编译
[mysql@as4 ~]$ ./configure --prefix=/opt/mysql-5.0.33 --localstatedir=/opt/mysql-5.0.33/data --with-unix-socket-path=/opt/mysql-5.0.33/tmp/mysql.sock --with-mysqld-user=mysql --enable-large-files --with-big-tables --with-charset=utf8 --with-extra-charsets=latin1,latin2,latin5,latin7,gb2312,gbk
--prefix参数是指定mysql的安装目录
--localstatedir是指定mysql数据的存放目录
--with-unix-socket-path是指定socket文件的存放路径
--with-mysqld-user是指定使用用户
可以用configure –help查看可以使用的所有参数
开始编译
[mysql@as4 ~]$ make
此过程相对来说会比较长,当然也跟机器的硬件配置有关
开始安装
[mysql@as4 ~]$ make install
此步骤完成后MySQL软件就安装到系统了,安装过程与Windows下的安装有些不同,由于是源码包安装,因此很多参数都是要手工设置的
安装完的重要设置
进行初始化数据操作
[mysql@as4~]$ ./scripts/mysql_install_db --datadir=/opt/mysql-5.0.33/data
此步骤创建2个系统初始数据库:mysql和test
1.3 管理MySQL
在运行数据库系统时, MySQL的使用相当简单,且进行MySQL安装和使用所需的工作也很少。MySQL的简单性可能就是它极为普及的原因,尤其是在非程序员人中的普及。当然,它对于训练有
素的计算机专业人员也是有帮助的,但肯定不是对运行一个成功的MySQL安装程序的需求。
如果有管理其他数据库系统的经验,将会发现:运行MySQL的安装程序在某些方面是类似的,您的经验也是用得着的。但是MySQL的管理有自己独特的需求,本书的这个部分将帮助您熟悉这些内容。
管理职责概述
MySQL数据库系统由几部分组成。您应该熟悉这些组成部分的内容和每个部分的目的。这需要您了解所管理系统的特征以及帮助您进行管理的可用工具。如果您花时间去了解了要监督的内容,工作将会变得非常容易。为此,您应当使自己熟悉MySQL的以下几个方面:
MySQL服务器。服务器mysql执行数据库和表的所有操作。safe_mysqld 是一个相关的程序,它用于启动服务器、监控服务器和重新启动服务器。
MySQL客户机和实用程序。有几个MySQL程序,可用来帮助您与服务器进行通信和执行管理的任务。其中最重要的几个是:
mysql,一个交互式程序,允许将SQL 语句发布到服务器上并浏览其结果。
mysqladmin,一个管理程序,允许执行诸如关闭服务器以及创建或删除数据库的工作。如果服务器运行不正常,还可以用mysqladmin 来检查服务器的状态。
isamchk 和my i s a m c h k,这些实用程序
帮助您完成表的分析和优化,以及在表损坏时进行崩溃恢复。
mysqldump,一个工具,用于备份数据库或将数据库拷贝到另一个服务器中。
服务器的语言,SQL。有些管理职责只能用mysqladmin 的命令行实用程序来完成,但是,如果还能用服务器自己的语言来同服务器进行对话,那就更好了。没有任何替代品能够参与并与服务器直接通信。可通过使用mysql客户机程序发布能够检验授权表的SQL 查询来做到这一点。如果MySQL版本还未引入GRANT 语句,则需要使用mysql首先设置每个用户的权限。
如果不知道SQL 的任何内容,至少必须对SQL要有基本的了解。缺乏对SQL 的熟悉只会带来困惑,而在学习SQL 上所花费的时间将会得到成倍的回报。真正掌握SQL 要花费一些时间,但掌握基本技能则很快。
硬盘可以读取但无法写入
MySQL数据目录。数据目录是服务器存储其数据库和状态文件的所在。了解数据目录的结构及内容是很重要的,您可以知道服务器是怎样使用文件系统来表现数据库和表的,以及像日志这样的文件的存放位置和其内容。还应该了解在文件系统中管理磁盘空间分配的选项,当发现放置数据目录的文件系统过满时可以进行调整。
常规管理
常规管理主要指处理mysqld、MySQL服务器和提供给用户的访问服务器的操作。在履行该职责时,下列的任务是最重要的:
服务器的启动和关闭。应该能够从命令行中手工启动和终止服务器,并且在系统启动和关闭时知道怎样进行自动启动和关闭。如果服务器崩溃了或启动不正常的话,了解怎样使服务器再次运行也是重要的。
用户账号维护。应该了解MySQL用户和UNIX 或Windows 用户之间的区别。应该知道怎样通过指定哪些用户可以连接到服务器和从哪里进行连接来建立MySQL用户账号。还应该给新的用户建议合适的连接参数,以使他们成功地连接到服务器。弄清应怎样建立账号不是用户们的工作。
日志文件维护。应该了解可以维护的日志文件的类型,以及在何时和怎样完成日志文件的维护。日志的循环和终止对于防止日志填满文件系统是必要的。
数据库备份和拷贝。数据库备份对服务器系统的崩溃是至关重要的。应该能够将数据库恢复到崩溃时的状态,以便尽可能地减少数据的丢失。请注意,数据库备份与常规的系统备份不同,例如,可通过使用UNIX 的dump 程序来进行。与数据库表相对应的文件在系统备份发生时随服务器活动而变化,因
此恢复那些文件将使您的表内部不一致。mysqldump 程序将产生对恢复数据库更有用的备份文件,并允许在不关闭服务器的状态下创建备份。
如果决定在更快的主机上运行数据库,或者想复制数据库
,则需要拷贝其内容到另一台机器上。如果需要的话,应该了解进行这项操作的过程。数据库文件是依赖于系统的,因此您不能只拷贝这些文件。
服务器优化。用户想要服务器以最佳状态运行。提高服务器运行性能的最简单方法是购买更多的内存或使磁盘速度更快。但是,这种直截了当的技术并不能代替对服务器工作的了解。应该了解优化服务器操作所用的参数以及如何将这些参数应用在您的环境中。在某些站点中,大多数查询都是检索。而在另一些站点,插入和更新操作占据着优势。选择对哪些参数进行修改将受到站点查询的影响。
多服务器。在某些环境中运行多服务器是有用的。如果保留当前的成品安装程序在适当的位置,或者为不同的用户组提供较好的保密性(后者与ISP 尤其相关),则可以测试新的MySQL版本。对于这些情形,您应该了解怎样建立多个同时发生的安装。
group by 最新一条
MySQL更新。由于新的MySQL版本频繁出现,应该知道怎样始终跟上这些版本以便利用故障修复和新的特性。需要了解不进行版本升级的理由,并且掌握怎样在稳定版本和开发者版本之间进行选择。
1.3.1 启动MySQL
[mysql@as4 /]$ ./bin/mysqld_safe --no-defaults &
1) --no-defaults 参数是不使用默认值,默认设置的数据库文件是存放在/var目录下
2)&是后台运行
1.3.2 停止MySQL
[mysql@as4 ~]$ mysqladmin shutdown -u root –p
-u 是指定用户
-p 是指定密码
在本机命令行下进入MySQL
mysql@as4 ~]$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.33
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
1.3.3 MySQL用户管理
MySQL安装好后默认的管理员帐号也是root(与OS的帐号名一样),而密码是空,但是只能从本机访问,该默认帐号可以被删除和修改。
一、新增MySQL用户
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令: 
grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; 
但例1增加的用户是十分危险的,如果某人知道test1的密码,那么他就可以在internet上的任何一台电
脑上登录这台mysql数据库并对数据可以为所欲为了,解决办法见例1。 
例1、增加一个用户test2密码为abc,使其只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,也无法从intern
et上直接访问数据库,只能通过MySQL主机上的web页来访问了。 
grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; 
如果你不想test2有密码,可以再打一个命令将密码消掉。 
grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
二、修改MySQL用户的方法,这里讲两种方法
1) 以root登陆后直接用SQL语句修改系统库mysql中的user表
[mysql@as4 mysql]$ mysql -u root –p(在命令行下用root身份进入MySQL)
mysql> use mysql; (选择系统数据库)
c语言编程入门步骤
mysql> update user set password=password('654321') where user='root' (将root用户的密码改成654321,注意要加函数password(),因为mysql中密码是采用MD5算法进行加密的,如果不用该函数密码将以明文存储,这样在登陆的时候系统把654321用MD5算法一计算后就跟表user中存出的654321密码不一致了,这样你就登陆不了了)
mysql> flush privileges; (提交你的修改请求)
2) 直接在bash shell命令行下用mysqladmin这个命令修改
[mysql@as4 mysql]$ mysqladmin -u root -p654321 password 123456
(将来root用户的密码从654321修改为123456)
添加一个远程管理MySQL的用户
[mysql@as4 ~]$ mysql
mysql> grant all privileges on *.* to mysql@'192.168.0.0/255.255.0.0' identified by 'mysql';
mysql> \q
以上命令可以添加一个可以从192.168.0.0/16IP段访问MySQL服务器上所有数据库的用户,其中帐号是mysql,口令是mysql
三、常用命令行操作
字符串截取c语言1 显示命令 
1)显示数据库列表。 
show databases; 
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 
2)显示库中的数据表: 
use mysql;  //打开库,学过FOXBASE的一定不会陌生吧 
show tables;
3)显示数据表的结构: 
describe 表名;
4)显示表中的记录: 
select * from 表名;
2 创建/删除命令
1) 建库: 
create database 库名; 
2) 建表: 
use 库名; 
mysql无法连接到服务器create table 表名 (字段设定列表); 
3) 删库和删表: 
drop database 库名; 
drop table 表名;
4) 将表中记录清空:
delete from 表名;
3 一个建库和建表以及插入数据的实例 
drop database if exists book; //如果存在book库则删除 
create database book;  //建立库book 
use book;    //打开库book 
create table storybook  //建立表storybook
id int(3) auto_increment not null primary key, 
name char(10) not null, 
author varchar(50) default '张三', 
public_date date 
);        //建表结束 
//以下为插入字段   
insert into storybook values('','MySQL数据库优化','李四','2006-12-15'); 
insert into storybook values('','精通PostgreSQL数据库','王五','2006-09-11'); 
注:在建表中 
(1)将i

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。