MySQL通常有三种安装方式:
RPM包 以及 yum 安装
通用二进制包安装
源码编译安装
这里, 我们仅对源码编译安装进行讲解。首先需要说明的是从MySQL5.5开始就要用cmake安装了,已不能用./configure编译安装,所以我们首先需要安装cmake。
1、安装必要的编译环境
# yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make ### 或者说是更粗暴的方式 # yum -y groupinstall "Development tools" ########################################## ### 然后安装以下包, 可以避免后面出现的错误 # yum -y install ncurses-devel
2、安装cmake
我还是建议yum安装cmake,可以省不少力气
# yum -y install cmake
3、创建mysql用户和组
# groupadd -r mysql # useradd -r -g mysql -s /sbin/nologin mysql
4、创建mysql数据目录(建议独立分区,且为逻辑卷)
这里,我创建 /mydata/data 目录
# mkdir -pv /mydata/data # chown -R mysql:mysql /mydata/data # ls -l /mydata total 4 drwxr-xr-x 2 mysql mysql 4096 Jul 10 07:17 data
5、编译安装
# tar xf mysql-5.5.38.tar.gz -C /usr/local/ # ln -s mysql-5.5.38 mysql # cd mysql [root@localhost mysql]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
报错了,Curses library not found.
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) CMake Error at cmake/readline.cmake:83 (MESSAGE): Curses library not found. Please install appropriate package, remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. Call Stack (most recent call first): cmake/readline.cmake:118 (FIND_CURSES) cmake/readline.cmake:214 (MYSQL_USE_BUNDLED_READLINE) CMakeLists.txt:361 (MYSQL_CHECK_READLINE) -- Configuring incomplete, errors occurred!
我们根据提示, 知道缺少ncurses-devel包,那么这就好办了,yum 安装即可
[root@localhost mysql]# yum -y install ncurses-devel
下面我们再次重新编译一下,可能还会报同样的错误,不要着急,遇到错误才能够学到东西,我们要仔细查看“报错信息”。人家已经说得非常清楚了,(-__-)b 都怪自己没有仔细看:
我们在多次运行cmake有个文件我们需要删除,删除当前目录下CMakeCache.txt文件并重新编译,再次运行cmake命令就会正常!
[root@localhost mysql]# rm -f CMakeCache.txt # 再次使用上述的 cmake 指令, 重新执行
如果环境检查没有问题, 那么下面就可以真正执行编译过程以及安装了。
[root@localhost mysql]# make && make install
这是一个非常漫长的过程,那么这里我们就来详细看看具体的编译选项
6、编译选项
说明:cmake指定编译选项的方式不同于make,其实现方式对比如下
./configure 对应的是 cmake .
./configure --help 对应的是 cmake . -LH 或者是 ccmake .
指定安装文件的安装路径时常用的选项
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql # 指定安装路径(默认的就是/usr/local/mysql) -DMYSQL_DATADIR=/data/mysql # mysql的数据文件路径 -DSYSCONFDIR=/etc # 配置文件路径
编译过程中启用其他存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 # 使用INNOBASE存储引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 # 常应用于日志记录和聚合分析,不支持索引 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 黑洞存储引擎
编译过程中取消一些存储引擎
-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1 示例如下: -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1
编译进过程中功能启用的指令介绍
-DWITH_READLINE=1 # 支持批量导入mysql数据 -DWITH_SSL=system # mysql支持ssl会话,实现基于ssl的数据复 -DWITH_ZLIB=system # 压缩库 -DWITH_LIBWRAP=0 # 是否可以基于WRAP实现访问控制
其他功能指令
-DMYSQL_TCP_PORT=3306 # 默认端口 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock # 默认套接字文件路径 -DENABLED_LOCAL_INFILE=1 # 是否启用LOCAL_INFILE功能 -DEXTRA_CHARSETS=all # 是否支持额外的字符集 -DDEFAULT_CHARSET=utf8 # 默认编码机制 -DDEFAULT_COLLATION=utf8_general_ci # 设定默认语言的排序规则 -DWITH_DEBUG=0 # DEBUG功能设置 -DENABLE_PROFILING=1 # 性能分析功能是否启用
7、MySQL服务启动脚本 及 配置文件
为了方便管理,MySQL官方提供给我们一些脚本:
# 拷贝配置文件 [root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf # 在mysql解压目录下,拷贝服务启动脚本 [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld # 给脚本赋予可执行权限 [root@localhost mysql]# chmod +x /etc/init.d/mysqld # 加入SysV [root@localhost mysql]# chkconfig --add mysqld # 开机启动 [root@localhost mysql]# chkconfig mysqld on
8、初始化
[root@localhost mysql]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data --user=mysql
额, 不知道什么情况, mysql_install_db 竟然没有可执行权限。
[root@localhost mysql]# chmod +x /usr/local/mysql/scripts/mysql_install_db # 然后重新执行 ### 或者 [root@localhost mysql]# bash /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data --user=mysql --basedir:该参数指定了安装 MySQL 的安装路径,填写全路径可以解决相对路径所造成的问题。 --datadir:该参数指定了 MySQL 的数据库文件放在什么路径下。数据库文件即我们常说的 MySQL data 文件
注意:为了安全,我们把mysql目录属主、属组改为root
[root@localhost mysql]# chown -R root:root mysql-5.5.38/
9、修改配置文件 /etc/my.cnf
# The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] user = mysql port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /mydata/data pid-file = /mydata/data/mysqld.pid ft_min_word_len = 4 max_allowed_packet = 32M character-set-server = utf8 skip-name-resolve
10、启动mysql服务
[root@localhost mysql]# service mysqld start Starting MySQL... SUCCESS! # 做一些基础安全配置 [root@localhost mysql]# bin/mysql_secure_installation # 根据提示选择 [Y/n] # 测试是否启动成功,查看3306端口 [root@localhost mysql]# netstat -tunlp | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24533/mysqld # 登录mysql [root@localhost mysql]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.5.38-log Source distribution Copyright (c) 2000, 2014, 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>
接下来,我们还需要做一些额外的工作:
1、将mysql的bin目录加入PATH 环境变量
[root@localhost mysql]# vim /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin [root@localhost mysql]# . /etc/profile.d/mysql.sh # 看一下是否成功 [root@localhost mysql]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
2、将mysql的man手册加入到man的path
[root@localhost mysql]# vim /etc/man.config # 新增一行 MANPATH /usr/local/mysql/man
3、mysql的库文件
[root@localhost mysql]# vim /etc/ld.so.conf.d/mysql.conf /usr/local/mysql/lib/ [root@localhost mysql]# ldconfig -v /usr/local/mysql/lib: libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0 /usr/lib/mysql: libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
4、mysql的头文件
[root@localhost mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql `/usr/include/mysql‘ -> `/usr/local/mysql/include‘
附录:
MySQL 5.5 编译参数说明
从mysql5.5起,mysql源码安装开始使用cmake。下面是 mysql 5.5 与以前的参数对照:
configure Command CMake Command
./configure cmake .
./configure –help cmake . -LH or ccmake .
参数说明:
红色为推荐参数(当然也要根据你的需求来制定)
绿色为可用参数
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DMYSQL_DATADIR=/usr/local/mysql/data //数据库存放目录
-DWITH_MYISAM_STORAGE_ENGINE=1 //安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 //安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 //安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 //安装blackhole存储引擎
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
-DDEFAULT_CHARSET=utf8 //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all //安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 //MySQL监听端口
-DMYSQL_USER=mysql //MySQL用户名
其他参数:
-DWITH-EMBEDDED_SERVER=1 //编译成embedded MySQL library (libmysqld.a)
-DSYSCONFDIR=/etc //MySQL配辑文件
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock //Unix socket 文件路径
-DWITH_READLINE=1 //快捷键功能
-DWITH_SSL=yes //SSL
-DWITH_MEMORY_STORAGE_ENGINE=1 //安装memory存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 //安装frderated存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 //安装数据库分区
-DINSTALL_PLUGINDIR=/usr/local/mysql/plugin //插件文件及配置路径
BUILD_CONFIG 采用官方发行版一致的编译参数
CMAKE_BUILD_TYPE 指定产品编译说明信息 RelWithDebInf
CMAKE_INSTALL_PREFIX 指定MySQL安装路径 /usr/local/mysql
CPACK_MONOLITHIC_INSTALL是否建立单个安装包文件 OFF
DEFAULT_CHARSET MYSQL 默认字符集 latin1
DEFAULT_COLLATION MYSQL 默认排序字符集 latin1_swedish_ci
ENABLE_DEBUG_SYNC 是否启用同步调试功能 ON
ENABLE_DOWNLOADS 是否下载可选文件 OFF
ENABLE_DTRACE 是否包含 DTrace 支持
ENABLE_GCOV 是否包含 Gcov 支持 5.5.14
ENABLED_LOCAL_INFILE 是否启用本地 LOAD DATA INFILE OFF
ENABLED_PROFILING 是否启用代码查询分析 ON
INSTALL_BINDIR MySQL 主执行文件目录 PREFIX/bin
INSTALL_DOCDIR 文档安装路径 PREFIX/docs
INSTALL_DOCREADMEDIR 自述文件目录 PREFIX
INSTALL_INCLUDEDIR 头文件目录 PREFIX/include
INSTALL_INFODIR 关于信息文件目录 PREFIX/docs
INSTALL_LAYOUT 选择预定义的安装 STANDALONE
INSTALL_LIBDIR 库文件目录 PREFIX/lib
INSTALL_MANDIR 手册页面目录 PREFIX/man
INSTALL_MYSQLSHAREDIR 共享数据目录 PREFIX/share
INSTALL_MYSQLTESTDIR mysql-test 目录 PREFIX/mysql-test
INSTALL_PLUGINDIR 插件目录 PREFIX/lib/plugin
INSTALL_SBINDIR 服务器超级用户执行文件目录 PREFIX/bin
INSTALL_SCRIPTDIR 脚本目录 PREFIX/scripts
INSTALL_SHAREDIR aclocal/mysql.m4 安装目录 PREFIX/share
INSTALL_SQLBENCHDIR sql-bench 性能测试工具目录 PREFIX
INSTALL_SUPPORTFILESDIR 扩展支持文件目录 PREFIX/support-files
MYSQL_DATADIR 数据库存放目录
MYSQL_MAINTAINER_MODE 是否启用MySQL的维护环境 OFF
MYSQL_TCP_PORT TCP/IP 端口号 3306
MYSQL_UNIX_ADDR Unix Socket 套接字文件 /tmp/mysql.sock
SYSCONFDIR 选项配置文件目录
WITH_COMMENT 编译环境发表评论
WITH_DEBUG 是否包括调试支持 OFF
WITH_EMBEDDED_SERVER 是否要建立嵌入式服务器 OFF
WITH_xxx_STORAGE_ENGINE 静态编译xxx 存储引擎到服务器
WITH_EXTRA_CHARSETS 额外的字符集,包括 all
WITH_LIBWRAP 是否包括支持libwrap(TCP包装) OFF
WITH_READLINE 使用捆绑的readline OFF
WITH_SSL 是否支持SSL no
WITH_ZLIB 是否支持Zlib system
WITHOUT_xxx_
MySQL 5.5.30服务器端优化 /etc/my.cnf配置文件 [client] port = 3306 socket = /tmp/mysql.sock [mysqld] #### mise #### user = mysql port = 3306 socket = /tmp/mysql.sock basedir = /data/mysql datadir = /data/mysql/data pid-file=/data/mysql/mysqld.pid #default-storage-engine = MYISAM ft_min_word_len = 4 max_allowed_packet = 32M character-set-server = utf8 skip-name-resolve #### performance #### open_files_limit = 10240 max_connections = 800 max_connect_errors = 6000 thread_stack = 192K transaction_isolation = REPEATABLE-READ tmp_table_size = 256M max_heap_table_size = 256M slow_query_log long_query_time = 1 log_slow_queries=/data/mysql/slow-log.log #### log #### log-error=/data/mysql/mysqld.err back_log = 500 log-bin=mysql-bin max_binlog_cache_size = 8M max_binlog_size = 512M binlog_format=mixed expire_logs_days = 7 #### buffer && cache #### read_buffer_size = 10M read_rnd_buffer_size = 32M sort_buffer_size = 2M join_buffer_size = 2M thread_cache_size = 300 thread_concurrency = 8 query_cache_size = 64M query_cache_limit = 4M binlog_cache_size = 4M table_open_cache = 2048 key_buffer_size = 32M bulk_insert_buffer_size = 64M #### myisam #### myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover #### innodb #### innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 4G innodb_data_file_path = ibdata1:1024M:autoextend innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M innodb_log_file_size = 150M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 60 innodb_flush_method = O_DIRECT #### replication #### replicate-ignore-db = mysql replicate-ignore-db = test replicate-ignore-db = information_schema server-id = 1 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 32M sort_buffer_size = 32M read_buffer = 8M write_buffer = 8M [mysqlhotcopy] interactive-timeout [mysqld_safe] open-files-limit = 8196
本文出自 “Share your knowledge” 博客,请务必保留此出处http://skypegnu1.blog.51cto.com/8991766/1439313