## 源码 编译安装 Mysql 以 mysql-5.7.15.tar.gz 为例 安装中涉及的几点需要提前说明的问题: 所有下载的文件将保存在 /root 目录下 mysql 将以 mysql 用户运行,而且将加入 service 开机自动运行 mysql 将被安装在 /usr/local/mysql/ 目录下 mysql 默认安装使用 utf8 字符集 mysql 的数据和日志文件保存在 /usr/local/mysql/data/ 目录下 mysql 的配置文件保存于/usr/local/mysql/etc/my.cnf 注意从 MySQL 5.7.5 开始 Boost 库是必需的 安装依赖包 yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison 、、、安装依赖库 、、安装 cmake 和 bison yum install -y cmake bison ncurses 、、下载 Boost wget http://ncu.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz 、、解压 tar zxf boost_1_59_0.tar.gz 、、移动 mv boost_1_59_0 /usr/local/boost ##建立 mysql 安装目录和用户, mkdir -pv /usr/local/mysql 、、、在/usr/local/mysql 建立【data】、【tmp】、【log】、【etc】4 个目录 cd /usr/local/mysql mkdir data tmp log etc 、、建立组和用户 groupadd mysql useradd -g mysql -s /usr/sbin/nologin mysql 、、、下载 mysql cd ~ wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.16.tar.gz 、、、解压并进入目录 tar zxf mysql-5.7.16.tar.gz cd mysql-5.7.16 、、、编写一个辅助 shell 文件,帮我们配置 mysql vim mysql_install.sh 、、、以下内容都写在一行上,不要换行 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_DEBUG=0 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITH_BOOST=/usr/local/boost 、、、把刚刚的 shell 文件加上可执行权限: chmod +x ./mysql_install.sh 、、、执行 shell 文件进行软件的配置和环境检测 ./mysql_install.sh 、、、编译软件并且进行安装 make && make install 出错停止。。。。。。 另外如果过程中出现报错而中断,需 要删除 CMakeCache.txt 文件后再执行 mysql_install.sh 文件(没出错请不要执行以 下两行指令!!!!): make clean rm -f CMakeCache.txt 或者 shell># unlink CMakeCache.tx ##############################配置######################## 。。。。使用递归,把 mysql 目录所有者设置为 mysql 这个用户: chown -R mysql:mysql /usr/local/mysql 。。。。如果 /etc/my.cnf 存在的话,请删除 unlink /etc/my.cnf 。。。。进入 MySQL 安装目录下 cd /usr/local/mysql 。。。。重建 my.cnf 文件 cp support-files/my-default.cnf etc/my.cnf 。。。。根据实际情况优化 mysql 配置 vim etc/my.cnf 比如将 my.cnf 的内容改成以下: [client] default-character-set = utf8 port = 3306 socket = /usr/local/mysql/tmp/mysql.sock [mysqld] datadir =/usr/local/mysql/data port = 3306 socket = /usr/local/mysql/tmp/mysql.sock user = mysql symbolic-links = 0 pid-file = /usr/local/mysql/tmp/mysql.pid explicit_defaults_for_timestamp = true sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER slow_query_log = on slow_query_log_file = /usr/local/mysql/log/slow.log long_query_time = 2 log_error = /usr/local/mysql/log/mysql.err 第 四 步: 。。。。 初始化 mysql 的基本表 。。5.7 以前的做法: /usr/local/mysql/scripts/mysql_install_db --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql 。。。。5.7 及以上的做法: ;;;;--initialize 会生成一个随机密码(~/.mysql_secret),而--initialize-insecure 不会生成密码 /usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql 。。。。启动 mysql /usr/local/mysql/bin/mysqld_safe > /dev/null 2>&1 & 。。。。修改 mysql 的 root 密码 /usr/local/mysql/bin/mysqladmin -u root password 密码 。。。。增加到开机启动 ;;;;先将 mysqld 设置为服务 cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 。。。。然后将 mysqld 服务加入启动项: chkconfig --add mysqld 。。。。设置为自启动: chkconfig --level 345 mysqld on 。。。。将 mysql 命令加入到环境变量里 PATH=$PATH:/usr/local/mysql/bin 。。。。为了重启后仍能有效: echo 'PATH=$PATH:/usr/local/mysql/bin' >> /root/.bashrc 。。。。如果需要对外开放 3306 端口 iptables -I INPUT -p tcp --dport 3306 -j ACCEPT 。。。。如果 mysqld 服务正常运行中,但是执行 mysql 指令时报出以下错误 ::error 2202 (HY000):can't connent .... 解决方案就是创建一个软链接 mkdir -pv /var/lib/mysql ln -s /usr/local/mysql/tmp/mysql.sock /var/lib/mysql/mysql.sock
弄了好几天,整理出来的。 有错误的地方欢迎指正。。。
