在诸多开源数据库中,MySQL是目前应用行业,特别是互联网行业发展最好的一个。借助灵活的架构特点和适应不同应用系统场景的Storage Engine,MySQL在很多方面已经有不次于传统商用数据库的表现。 本篇作为MySQL的开篇,只是从最简单的安装着手。所谓万事开头难,希望笔者的学习研究过程能够顺利。 1、说说MySQL的版本 首先,我们简单说说MySQL的版本。在Oracle收购开源数据库MySQL之后,对MySQL进行了重新部署。目前我们看到的MySQL系统组件和版本,就是Oracle对其进行整合之后的版本。 从发行版本上,目前MySQL最新版本是5.5,每隔一个时期就会有新的子版本发行。根据收费和服务支持情况,MySQL分为社区版Community和企业版Enterprise。社区版是提供完全免费的应用授权,并且完全公布源代码。而企业版是收费版本,要向Oracle缴纳许可授权费用。所以,目前真正意义的开源数据库,也只是以Community作为一个代表。 在Community中,根据不同人群使用的要求分为二进制版、压缩版和源代码版。 ü 二进制发布版(Binary Distribution)是我们经常使用,也是最容易使用的一个版本。MySQL针对不同的平台,提供了mis、rpm等安装文件格式; ü 压缩版(Zip)也可以称为“绿色版”。提供的压缩包中,包括了安装后所有的目录结构和配置文件。作为最简单的应用,只要解压到目录上,并且进行一些配置连接就可以了。压缩版最大的好处是独立于操作系统,对原有的结构没有影响; ü 源代码版(Source)是针对一些个性化操作系统或者个性化功能需求而言的。需要用户在指定的平台操作系统上进行编译、链接,形成可执行版本; 本篇就简单介绍一下Linux环境下压缩版配置的一些问题和解决方法。 2、基本配置 首先,我们准备好Linux环境,我们使用CentOS 5.8进行试验安装。第一步,我们需要将下载好的MySQL压缩版通过FTP/SFTP上传到Linux服务器上。 --创建目录 [root@bspdev ~]# cd / [root@bspdev /]# mkdir mysql [root@bspdev /]# ls -l | grep mysql drwxr-xr-x 2 root root 4096 Jul 1 03:56 mysql 使用FTP/SFTP软件,将压缩包(mysql-5.5.25-linux2.6-i686.tar.gz)上传到指定目录,并且解压。 [root@bspdev /]# cd mysql [root@bspdev mysql]# ls -l total 175376 -rw-r--r-- 1 root root 179403866 Jul 1 03:57 mysql-5.5.25-linux2.6-i686.tar.gz [root@bspdev mysql]# tar -vxf mysql-5.5.25-linux2.6-i686.tar.gz mysql-5.5.25-linux2.6-i686/include/my_config.h mysql-5.5.25-linux2.6-i686/include/keycache.h mysql-5.5.25-linux2.6-i686/include/m_string.h mysql-5.5.25-linux2.6-i686/include/mysql_version.h mysql-5.5.25-linux2.6-i686/include/my_alloc.h (篇幅原因,省略……) [root@bspdev mysql]# ls -l total 4 drwxr-xr-x 13 root root 4096 Jul 1 04:02 mysql-5.5.25-linux2.6-i686 打开目录,可以发现压缩版解压之后,所有的配置文件和执行程序目录。 [root@bspdev mysql-5.5.25-linux2.6-i686]# ls -l total 76 drwxr-xr-x 2 root root 4096 Jul 1 04:01 bin -rw-r--r-- 1 7161 wheel 17987 May 15 15:46 COPYING drwxr-xr-x 4 root root 4096 Jul 1 04:02 data drwxr-xr-x 2 root root 4096 Jul 1 04:01 docs drwxr-xr-x 3 root root 4096 Jul 1 04:00 include -rw-r--r-- 1 7161 wheel 7604 May 15 15:46 INSTALL-BINARY drwxr-xr-x 3 root root 4096 Jul 1 04:02 lib drwxr-xr-x 4 root root 4096 Jul 1 04:00 man drwxr-xr-x 10 root root 4096 Jul 1 04:02 mysql-test -rw-r--r-- 1 7161 wheel 2552 May 15 15:46 README drwxr-xr-x 2 root root 4096 Jul 1 04:01 scripts drwxr-xr-x 27 root root 4096 Jul 1 04:02 share drwxr-xr-x 4 root root 4096 Jul 1 04:01 sql-bench drwxr-xr-x 2 root root 4096 Jul 1 04:01 support-files [root@bspdev mysql-5.5.25-linux2.6-i686]# pwd /mysql/mysql-5.5.25-linux2.6-i686 注意,无论是Windows版还是Linux版,MySQL在运行启动的时候,都需要一个基础配置文件。不同的操作系统拓展名称不一样,大都是my.ini/my.cnf等等。 在目录的support-files中,我们可以找到MySQL提供了一套默认模板,用于配置不同规模的MySQL数据库。 [root@bspdev mysql-5.5.25-linux2.6-i686]# cd support-files/ [root@bspdev support-files]# ls -l total 96 -rwxr-xr-x 1 7161 wheel 1153 May 15 16:46 binary-configure -rwxr-xr-x 1 7161 wheel 4528 May 15 16:46 config.huge.ini -rwxr-xr-x 1 7161 wheel 2382 May 15 16:46 config.medium.ini -rwxr-xr-x 1 7161 wheel 1626 May 15 16:46 config.small.ini -rw-r--r-- 1 7161 wheel 773 May 15 15:46 magic -rw-r--r-- 1 7161 wheel 4691 May 15 16:46 my-huge.cnf -rw-r--r-- 1 7161 wheel 19759 May 15 16:46 my-innodb-heavy-4G.cnf -rw-r--r-- 1 7161 wheel 4665 May 15 16:46 my-large.cnf -rw-r--r-- 1 7161 wheel 4676 May 15 16:46 my-medium.cnf -rw-r--r-- 1 7161 wheel 2840 May 15 16:46 my-small.cnf -rwxr-xr-x 1 7161 wheel 1061 May 15 16:46 mysqld_multi.server -rwxr-xr-x 1 7161 wheel 839 May 15 16:46 mysql-log-rotate -rwxr-xr-x 1 7161 wheel 10650 May 15 16:46 mysql.server -rwxr-xr-x 1 7161 wheel 1326 May 15 16:46 ndb-config-2-node.ini --拷贝模板到指定目录指定名称。 [root@bspdev support-files]# cp my-huge.cnf /etc/my.cnf 标红的几个文件,就是针对不同的系统规模,主要是服务器内存大小来预定义的配置文件。My-huge.cnf一般是应对服务器内存在1-2G,而且是专门作为MySQL服务器使用的场景。这点对于目前的生产系统,不是什么大问题。所以,我们使用这个版作为基础模板,复制为/etc/my.cnf。 对MySQL配置文件的目录,不同的操作系统有不同的默认选择。对Windows而言,默认是选择%WINDIR%作为优先搜索目录,找寻文件名称为my.ini的文件。当然,我们在mysqld的启动参数defaults-file中,也可以指定该文件的目录名称。 对Linux环境下,我们就将其放在/etc/my.cnf就可以了。 3、用户和相关配置 在Oracle配置时,我们创建了专门的OS用户来安装Oracle。对MySQL,我们也选择相对应的策略。注意:root用户一般不会充当专门的应用系统用户。 [root@bspdev support-files]# groupadd mysql –组group创建 [root@bspdev support-files]# useradd -g mysql mysql –用户创建 [root@bspdev support-files]# id mysql uid=500(mysql) gid=500(mysql) groups=500(mysql) [root@bspdev support-files]# passwd mysql --密码修改 Changing password for user mysql. New UNIX password: BAD PASSWORD: it is too short Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@bspdev support-files]# su – mysql 此外,我们要保证mysql能够访问到MySQL系统bin目录下的程序,要修改环境变量PATH。 [mysql@bspdev ~]$ vi .bash_profile (篇幅原因,省略部分……) PATH=$PATH:$HOME/bin PATH=$PATH:/mysql/mysql-5.5.25-linux2.6-i686/bin export PATH ~ ~ [mysql@bspdev ~]$ su - mysql Password: [mysql@bspdev ~]$ env | grep PATH PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/mysql/bin:/mysql/mysql-5.5.25-linux2.6-i686/bin 最后,将相应目录的权限赋予mysql用户。 [mysql@bspdev ~]$ su - root Password: [root@bspdev ~]# cd / [root@bspdev /]# chown -R mysql:mysql mysql/ [root@bspdev /]# ls -l | grep mysql drwxr-xr-x 3 mysql mysql 4096 Jul 1 04:03 mysql [root@bspdev etc]# pwd /etc [root@bspdev etc]# chown mysql:mysql my.cnf [root@bspdev etc]# ls -l | grep my.cnf -rw-r--r-- 1 mysql mysql 4691 Jul 1 04:05 my.cnf 4、配置文件修改 下面,需要对my.cnf做出简单的修改,使其可以作为启动文件。我们必须添加上MySQL程序文件和数据文件的目录,这样才能够让MySQLd服务器在启动后可以找到相应的路径。 [root@bspdev etc]# su - mysql [mysql@bspdev ~]$ vi /etc/my.cnf # Example MySQL config file for very large systems. # # This is for a large system with memory of 1G-2G where the system runs mainly # MySQL. # # MySQL programs look for option files in a set of # locations which depend on the deployment platform. # The MySQL server [mysqld] basedir=/mysql/mysql-5.5.25-linux2.6-i686 datadir=/mysql/mysql-5.5.25-linux2.6-i686/data 注意,basedir和datadir是通常需要设置的内容。如果没有设置,MySQL会根据操作系统的不同,在默认目录上进行寻找,引起错误。 5、初始化数据库 对Linux版本的压缩版,我们需要手工的创建数据库。在Windows版本中,很多时候是不需要进行这个步骤的。创建的方法也比较简单,就是运行相应的脚本程序。 --在程序目录中。 [mysql@bspdev mysql-5.5.25-linux2.6-i686]$ scripts/mysql_install_db Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /mysql/mysql-5.5.25-linux2.6-i686/bin/mysqladmin -u root password 'new-password' /mysql/mysql-5.5.25-linux2.6-i686/bin/mysqladmin -u root -h bspdev.localdomain password 'new-password' Alternatively you can run: /mysql/mysql-5.5.25-linux2.6-i686/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /mysql/mysql-5.5.25-linux2.6-i686 ; /mysql/mysql-5.5.25-linux2.6-i686/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /mysql/mysql-5.5.25-linux2.6-i686/mysql-test ; perl mysql-test-run.pl Please report any problems with the /mysql/mysql-5.5.25-linux2.6-i686/scripts/mysqlbug script! 从输出信息,我们可以看到MySQL提供了一些信息,作为下面工作的参考。 6、启动/关闭测试 到此,主要的安装步骤已经完成,我们进行初步的启动服务器试验。 [mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysqld & [1] 28398 [mysql@bspdev mysql-5.5.25-linux2.6-i686]$ 120701 4:21:42 [Warning] Changed limits: max_open_files: 1024 max_connections: 151 table_cache: 431 120701 4:21:42 [Note] Plugin 'FEDERATED' is disabled. 120701 4:21:42 InnoDB: The InnoDB memory heap is disabled 120701 4:21:42 InnoDB: Mutexes and rw_locks use InnoDB's own implementation 120701 4:21:42 InnoDB: Compressed tables use zlib 1.2.3 120701 4:21:42 InnoDB: Using Linux native AIO 120701 4:21:42 InnoDB: Initializing buffer pool, size = 128.0M 120701 4:21:42 InnoDB: Completed initialization of buffer pool InnoDB: The first specified data file ./ibdata1 did not exist: InnoDB: a new database to be created! 120701 4:21:42 InnoDB: Setting file ./ibdata1 size to 10 MB InnoDB: Database physically writes the file full: wait... 120701 4:21:42 InnoDB: Log file ./ib_logfile0 did not exist: new to be created InnoDB: Setting log file ./ib_logfile0 size to 5 MB InnoDB: Database physically writes the file full: wait... 120701 4:21:42 InnoDB: Log file ./ib_logfile1 did not exist: new to be created InnoDB: Setting log file ./ib_logfile1 size to 5 MB InnoDB: Database physically writes the file full: wait... InnoDB: Doublewrite buffer not found: creating new InnoDB: Doublewrite buffer created InnoDB: 127 rollback segment(s) active. InnoDB: Creating foreign key constraint system tables InnoDB: Foreign key constraint system tables created 120701 4:21:43 InnoDB: Waiting for the background threads to start 120701 4:21:44 InnoDB: 1.1.8 started; log sequence number 0 120701 4:21:44 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306 120701 4:21:44 [Note] - '0.0.0.0' resolves to '0.0.0.0'; 120701 4:21:44 [Note] Server socket created on IP: '0.0.0.0'. 120701 4:21:44 [Note] Event Scheduler: Loaded 0 events 120701 4:21:44 [Note] mysqld: ready for connections. Version: '5.5.25-log' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL) [mysql@bspdev mysql-5.5.25-linux2.6-i686]$ 从日志信息上看,基本没有什么大问题,除了一个warning内容。下面我们尝试连接用户。 [mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.5.25-log MySQL Community Server (GPL) Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; --连接成功,执行命令成功; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> 说明MySQL运行状态正常。下面是使用mysqladmin管理程序进行服务器状态查询和关闭操作。 mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysqladmin -u root status Uptime: 66 Threads: 1 Questions: 4 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.060 [mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysqladmin -u root shutdown 120701 4:23:16 [Note] mysqld: Normal shutdown 120701 4:23:16 [Note] Event Scheduler: Purging the queue. 0 events 120701 4:23:16 InnoDB: Starting shutdown... 120701 4:23:17 InnoDB: Shutdown completed; log sequence number 1595675 120701 4:23:17 [Note] mysqld: Shutdown complete [1]+ Done mysqld 至此,我们起码是将Mysql服务器安装配置上,并且可以正常的进行访问。但是,还有一些额外的问题没有得到彻底解决,比如登录密码、告警日志中Warning信息等。我们留待下篇继续研究。 (责任编辑:IT) |