mysql 5.7.22 安装
1. 下载源码
官网下载地址:
mysql 安装包分为三种:
-
rpm包
- 优点:安装简单,适合初学者学习使用
- 缺点:需要单独下载客户端和服务器;安装路径不灵活,默认路径不能修改,一台服务器只能安装一个MySQL
-
二进制包( Linux - Generic)
- 优点: 安装简单;可以安装到任何路径下,灵活性好;一台服务器可以安装多个MySQL
- 缺点: 已经经过编译,性能不如源码编译的好;不能灵活定制编译参数
-
源码包 ( Source Code )
- 优点: 在实际安装的操作系统进行可根据需要定制编译,最灵活;性能最好;一台服务器可以安装多个MySQL
- 缺点: 安装过程较复杂;编译时间长
2. 安装
1. RPM安装
-
安装过程
rpm -ivh MySQL-server* MySQL-client* groupadd mysql useradd -g mysql mysql
-
安装文件位置
/usr/bin:客户端程序和脚本 /usr/sbin:mysqld服务器 /var/lib/mysql:日志文件,数据库 /usr/share/doc/packages:文档 /usr/include/mysql:包含(头)文件 /usr/lib/mysql:库文件 /usr/share/mysql:错误消息和字符集文件 /usr/share/sql-bench:基准程序bin:客户端程序和mysqld服务器 data:日志文件,数据库 docs:文档,ChangeLog include:包含(头)文件 lib:库 scripts:mysql_install_db用来初始化系统数据库 share/mysql:错误消息文件 sql-bench:基准程序bin:客户端程序和脚本 include/mysql:包含(头)文件 info:Info格式的文档 lib/mysql:库文件 libexec:mysqld服务器 share/mysql:错误消息文件 sql-bench:基准程序和crash-me测试 var:数据库和日志文件
2. 二进制安装
-
安装过程
# 解压文件 tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar -C /Data/apps/ mv /Data/apps/mysql-5.7.22* /Data/apps/mysql_5722 ln -s /Data/apps/mysql_5722 /Data/apps/mysql # mysql安装目录 MYSQL_DIR="/Data/apps/mysql" MYSQL_DATA=${MYSQL_DIR}/data mkdir -p ${MYSQL_DATA} mkdir -p ${MYSQL_DIR}/log # 添加mysql用户、用户组 groupadd mysql useradd -r -g mysql mysql mkdir /home/mysql useradd -r -s /sbin/nologin -g mysql mysql -d /home/mysql chown -R mysql.mysql /home/mysql chown -R mysql.mysql $MYSQL_DIR # 复制启动脚本,修改mysql 目录位置 cp mysql.server /etc/init.d/mysqld # 初始化数据库,获取初始化密码 ${MYSQL_DIR}/bin/mysqld --initialize --user=mysql --basedir=${MYSQL_DIR} --datadir=${MYSQL_DATA} # 进入mysql 修改初始密码 mysql -uroot -p set password=password('larryzl'); # 添加远程用户 grant all privileges on *.* to root@'%' identified by 'larryzl'; flush privileges;
3. 源码安装
-
环境介绍
-
安装
#!/bin/bash MYSQL_DIR="/Data/apps/mysql" MYSQL_DATA=${MYSQL_DIR}/data PASSWD="" get_os(){ [ -f /etc/redhat-release ] && awk '{print ($1)}' /etc/redhat-release|grep -Eqi "centos|red hat|redhat" if [ $? -eq 0 ];then echo 'centos' fi [ -f /etc/os-release ] && awk -F'[= "]' '/PRETTY_NAME/{print $3}' /etc/os-release| grep -Eqi "ubuntu" if [ $? -eq 0 ];then echo 'ubuntu' fi } os=$( get_os ) if [ "${os}0" == "centos0" ];then yum -y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake elif [ "${os}0" == "ubuntu0" ]; then apt-get -y install make cmake gcc g++ bison libncurses5-dev build-essential else echo "OS is not support" exit 1 fi cd /usr/local/src/ [ -d .mysql_install_dir ] || mkdir .mysql_install_dir cd .mysql_install_dir # download mysql [ -f mysql.tar.gz ] || wget -O mysql.tar.gz https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz [ -f boost_1_59_0.tar.gz ] || wget -O boost_1_59_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz if [ -d /usr/local/boost ] ;then echo "boost is exist" else tar zxf boost_1_59_0.tar.gz mv boost_1_59_0 /usr/local/boost fi [ -d .mysql ] && rm -rf .mysql/* || mkdir .mysql tar zxf mysql.tar.gz -C .mysql/ cd .mysql/mysql-* groups mysql || groupadd mysql id mysql ||useradd -r -g mysql -s /sbin/nologin -M mysql mkdir -p $MYSQL_DIR/{data,logs,pids} chown -R mysql:mysql $MYSQL_DIR cmake . \ -DCMAKE_INSTALL_PREFIX=$MYSQL_DIR \ -DMYSQL_DATADIR=$MYSQL_DATA \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_USER=mysql \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DENABLE_DOWNLOADS=1 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/boost make make install ${MYSQL_DIR}/bin/mysqld \ --defaults-file=/etc/my.cnf \ --initialize-insecure \ --user=mysql \ --basedir=$MYSQL_DIR \ --datadir=${MYSQL_DATA} ${MYSQL_DIR}/bin/mysqld_safe --defaults-file=/etc/my.cnf & if [ "${PASSWD}0" == "0" ];then PASSWD=$( < /dev/urandom tr -dc '1-9a-zA-Z'|head -c 12) fi cat > .init.sql <<EOF SET PASSWORD = PASSWORD('${PASSWD}'); ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; flush privileges; EOF cat > login_mysql.sh <<EOF ${MYSQL_DIR}/bin/mysql -uroot -p'${PASSWD}' -S ${MYSQL_DIR}/mysql.sock EOF