- /usr/local/webserver/mysql/scripts/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data0/mysql/data --user=mysql
一、获取相关开源程序
1、本文基本以源码编译为主,首先需要安装基础编译环境所需要的软件和库。本文安装CentOS系统时只安装最基础的包(安装时软件套件选择时只选了Server一项),下面的所需要的包可根据自己系统环境情况自行调整。
a)、通过CentOS光盘安装(以光盘作为Yum源)
- mkdir /media/CentOS/
- mount /dev/cdrom /media/CentOS/
- yum -y --disablerepo=\* --enablerepo=c5-media install gcc gcc-c++ autoconf \
- libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 \
- libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 \
- bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
- krb5 krb5-devel libidn libidn-devel openssl openssl-devel libtool libtool-libs \
- libevent-devel libevent openldap openldap-devel nss_ldap openldap-clients \
- openldap-servers libtool-ltdl libtool-ltdl-devel bison
b)、通过mirrors.163.com安装(以mirrors.163.com为Yum源)
- mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- wget http://mirrors.163.com/.help/CentOS5-Base-163.repo
- yum makecache
- yum -y --enablerepo=c5-media install gcc gcc-c++ autoconf \
- libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 \
- libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 \
- bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
- krb5 krb5-devel libidn libidn-devel openssl openssl-devel libtool libtool-libs \
- libevent-devel libevent openldap openldap-devel nss_ldap openldap-clients \
- openldap-servers libtool-ltdl libtool-ltdl-devel bison
2、下载最新的Nginx、Mysql、PHP程序及相关库的源码包
- mkdir -p /data0/software
- cd /data0/software
- wget http://nginx.org/download/nginx-1.0.0.tar.gz
- wget http://cn.php.net/get/php-5.3.6.tar.gz/from/this/mirror
- wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.11.tar.gz/from/http://mysql.ntu.edu.tw/
- wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
- wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"
- wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"
- wget http://pecl.php.net/get/memcache-2.2.6.tgz
- wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"
- wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
- wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
- wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
- wget ftp://gd.tuwien.ac.at/pub/graphics/ImageMagick/ImageMagick-6.6.9-5.tar.gz
- wget http://pecl.php.net/get/imagick-3.0.0.tgz
- wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
二、安装MySQL 5.5.11
1、首先安装CMAKE(Mysql5.5.11已经采用CMAKE编译)
- tar zxvf cmake-2.8.4.tar.gz
- cd cmake-2.8.4
- ./configure --prefix=/usr
- make
- make install
- cd ..
2、安装MySQL 5.5.11
a)新建一个用于运行MySQL的用户
- /usr/sbin/groupadd mysql
- /usr/sbin/useradd -g mysql mysql
b)解包并编译安装MySQL
- tar xvf mysql-5.5.11.tar.gz
- cd mysql-5.5.11
- cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/ \
- -DMYSQL_DATADIR=/data0/mysql/data \
- -DMYSQL_UNIX_ADDR=/data0/mysql/mysqld.sock \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DWITH_MYISAM_STORAGE_ENGINE=1 \
- -DENABLED_LOCAL_INFILE=1 \
- -DMYSQL_TCP_PORT=3306 \
- -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
- -DDEFAULT_CHARSET=utf8 \
- -DDEFAULT_COLLATION=utf8_general_ci \
- -DMYSQL_UNIX_ADDR=/data0/mysql/mysql.sock \
- -DWITH_DEBUG=0 \
- -DWITH_READLINE=1 \
- -DWITH_SSL=yes \
- -DSYSCONFDIR=/data0/mysql
- make
- make install
- cd ..
c)将MySQL安装目录的权限赋予mysql用户
- chmod +w /usr/local/webserver/mysql
- chown -R mysql:mysql /usr/local/webserver/mysql
d)创建MySQL数据库存放目录
- mkdir -p /data0/mysql/data/
- mkdir -p /data0/mysql/binlog/
- mkdir -p /data0/mysql/relaylog/
- chown -R mysql:mysql /data0/mysql/
e)以mysql用户帐号的身份建立数据表
- /usr/local/webserver/mysql/scripts/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data0/mysql/data --user=mysql
f )创建my.cnf配置文件
- vi /data0/mysql/my.cnf
- [client]
- default-character-set=utf8
- port = 3306
- socket = /tmp/mysql.sock
- [mysqld]
- character-set-server = utf8
- replicate-ignore-db = mysql
- replicate-ignore-db = test
- replicate-ignore-db = information_schema
- user = mysql
- port = 3306
- socket = /tmp/mysql.sock
- basedir = /usr/local/webserver/mysql
- datadir = /data0/mysql/data
- log-error = /data0/mysql/mysql_error.log
- pid-file = /data0/mysql/mysql.pid
- open_files_limit = 10240
- back_log = 600
- max_connections = 5000
- max_connect_errors = 6000
- table_cache = 614
- external-locking = FALSE
- max_allowed_packet = 32M
- sort_buffer_size = 1M
- join_buffer_size = 1M
- thread_cache_size = 300
- #thread_concurrency = 8
- query_cache_size = 512M
- query_cache_limit = 2M
- query_cache_min_res_unit = 2k
- default-storage-engine = MyISAM
- thread_stack = 192K
- transaction_isolation = READ-COMMITTED
- tmp_table_size = 246M
- max_heap_table_size = 246M
- long_query_time = 3
- log-slave-updates
- log-bin = /data0/mysql/binlog/binlog
- binlog_cache_size = 4M
- binlog_format = MIXED
- max_binlog_cache_size = 8M
- max_binlog_size = 1G
- relay-log-index = /data0/mysql/relaylog/relaylog
- relay-log-info-file = /data0/mysql/relaylog/relaylog
- relay-log = /data0/mysql/relaylog/relaylog
- expire_logs_days = 30
- key_buffer_size = 256M
- read_buffer_size = 1M
- read_rnd_buffer_size = 16M
- bulk_insert_buffer_size = 64M
- myisam_sort_buffer_size = 128M
- myisam_max_sort_file_size = 10G
- myisam_repair_threads = 1
- myisam_recover
- interactive_timeout = 120
- wait_timeout = 120
- skip-name-resolve
- slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
- server-id = 1
- innodb_additional_mem_pool_size = 16M
- innodb_buffer_pool_size = 512M
- innodb_data_file_path = ibdata1:256M:autoextend
- innodb_file_io_threads = 4
- innodb_thread_concurrency = 8
- innodb_flush_log_at_trx_commit = 2
- innodb_log_buffer_size = 16M
- innodb_log_file_size = 128M
- innodb_log_files_in_group = 3
- innodb_max_dirty_pages_pct = 90
- innodb_lock_wait_timeout = 120
- innodb_file_per_table = 0
- log-slow-queries = /data0/mysql/slow.log
- long_query_time = 10
- log-queries-not-using-indexes
- [mysqldump]
- quick
- max_allowed_packet = 32M
g)创建管理MySQL数据库的shell脚本(注:此处操作有点疑问,需 /usr/local/webserver/mysql/bin/mysqld_safe 启动mysql后,才能对该shell脚本正常使用)
- vi /data0/mysql/mysql
- #!/bin/bash
- mysql_username="admin"
- mysql_password="000000"
- function_start_mysql()
- {
- printf "Starting MySQL...\n"
- /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/data0/mysql/my.cnf 2>&1 > /dev/null &
- }
- function_stop_mysql()
- {
- printf "Stoping MySQL...\n"
- /usr/local/webserver/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown
- }
- function_restart_mysql()
- {
- printf "Restarting MySQL...\n"
- function_stop_mysql
- sleep 5
- function_start_mysql
- }
- function_kill_mysql()
- {
- kill -9 $(ps -ef|grep 'bin/mysqld_safe'|grep -v 'grep'|awk '{printf $2}')
- kill -9 $(ps -ef|grep 'libexec/mysqld'|grep -v 'grep'|awk '{printf $2}')
- }
- if [ "$1" = "start" ]; then
- function_start_mysql
- elif [ "$1" = "stop" ]; then
- function_stop_mysql
- elif [ "$1" = "restart" ]; then
- function_restart_mysql
- elif [ "$1" = "kill" ]; then
- function_kill_mysql
- else
- printf "Usage: /data0/mysql/mysql {start|stop|restart|kill}\n"
- fi
赋予shell脚本可执行权限
- chmod +x /data0/mysql/mysql
h)测试Mysql的启动的关闭
启动MySQL
- /data0/mysql/mysql start
通过命令行登录管理MySQL服务器(提示输入密码时直接回车,缺省的Mysql的root用户无密码)
- /usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
创建一个具有root权限的用户:admin,密码是:000000(用于上面建的管理脚本中的mysqladmin)
- GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '000000';
- GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '000000';
停止MySQL:
- /data0/mysql/mysql stop
g)、设置libmysqlclient的软链,防止编译其它依赖Mysql软件时出现libmysqlclient.so.18: cannot open shared object file 的错误