#编译安装MySQL有很多好处,
!!!开始!!!
#安装依赖环境(大部分依赖不是安装MySQL所必须的,但是安装其他部分软件需要,所以就全部安装了。他们大部分只是作为工具,不用的情况下一般不占用内存)
yum -y install gcc-c++ m4 ncurses-devel cmake autoconf automake libtool bison [libaio] yum -y install gcc libxml2-devel libxml2 libxml2-devel openssl curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel pcre* zlib-devel openssl-devel gcc-c++ ncurses-devel cmake autoconf automake libtool bison #设置虚拟内存,防止编译时内存不够而出错(出错了再设置虚拟内存会重新接着上次的地方编译) dd if=/dev/zero of=/swapfile bs=1k count=2048000 && mkswap /swapfile && swapon /swapfile && echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab #设置数据库软件安装的目录(我也是个初学者,百度太多教程,安装路径不统一,所以当安装在自己想安装的目录时头晕走了很多弯路,这样先指定比较清晰) app='/datas/bin' echo "export app=$app" >> /etc/profile && source /etc/profile #设置数据库数据存放目录 mysql_data='/datas/bin/mysql/data' echo "export mysql_data=$mysql_data" >> /etc/profile && source /etc/profile #重命名或删掉系统自带的MySQL配置文件 mv /etc/my.cnf /etc/my.cnf-`date +%F` mv /etc/mysql /etc/mysql.bak #查看MySQL用户和用户组是否已经创建(未创建则执行下一步创建) cat /etc/passwd | grep mysql&&cat /etc/group | grep mysql #新建一个不能登录的mysql帐号和组,名字可以随意,但最好不改 groupadd mysql useradd -g mysql mysql #从官网下载MySQL安装源码(此时最新版是5.7.19,,但是安装5.7.19时,,无论是用官网已经编译好的二进制文件还是自己编译,,到最后启动时总会产生一个.lo的文件无法访问,,应该是从5.7.19开始还需要什么东西..单凭源码包大小来看,5.7.19就比5.7.18小了不少) cd $app wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.18.tar.gz #解压 tar -zxf mysql-boost-*.tar.gz #进入解压目录 cd $app/mysql-* #创建一个自定义文件夹来存放待会儿设置和编译出来的文件 mkdir mysqlBianYi cd $app/mysql-*/mysqlBianYi #设置选项(点击访问官网对选项的解释) cmake .. -DCMAKE_INSTALL_PREFIX=$app/mysql -DMYSQL_DATADIR=$mysql_data -DWITH_BOOST=$app/mysql-*/boost -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=$app/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DMYSQL_USER=mysql #有几个选项要特别注意 #1.-DCMAKE_INSTALL_PREFIX选项表示MySQL软件安装的位置 #2.-DMYSQL_DATADIR选项表示数据存放位置 #3.-DWITH_BOOST选项表示boost文件路径,因为编译要用的他们,,下载源码的时候可以选择下载带boost文件的包,如果下载了不带boost文件的包时,要自己特别指定或在编译时自动下载(需要说明,具体做法见百度) #4.-DMYSQL_USER选项为刚刚新建的用户名 #5.cmake后面的两个点表示上一级目录,因为我们要编译的是上一级目录里的文件,如果不重新创建一个文件夹来存放编译好的文件的话,,用一个点表示当前目录即可 #编译(有些教程用make -j4,,即启用4个线程用时编译以所短时间,但是我试过中途出错,应该是机器内存不够的原因) make #安装 make install #设置相关目录的权限和所属组 mkdir $mysql_data && chmod 750 $mysql_data && chown mysql.mysql -R $mysql_data chown -R mysql $app/mysql chgrp -R mysql $app/mysql #添加环境变量 PATH=$PATH:$app/mysql/bin #将MySQL数据库的动态链接库共享至系统链接库,这样MySQL服务就可以被其它服务调用了: ln -s $app/mysql/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20 #复制一下启动脚本(注意:当安装多个MySQL时最好不要复制,复制的好处是可以使用简单启动命令启动) cp $app/mysql/support-files/mysql.server /etc/init.d/mysqld #开机启动 chmod 755 /etc/init.d/mysqld && chkconfig --add mysqld && chkconfig --level 345 mysqld on #(没有复制的可省略此步骤) chmod 755 $app/mysql/support-files/mysql.server #初始化数据库(如果初始化失败时,要删除数据存放目录-$mysql_data,并且检查前面的配置再重新初始化) #--initialize-insecure选项作用为不生成随机密码,这样自己登录修改即可 mysqld --initialize-insecure --user=mysql --basedir=$app/mysql --datadir=$mysql_data #简单启动命令一 service mysqld start #简单启动命令二(本质上和第一个一样) /etc/init.d/mysqld start #启动命令三(适合安装多个数据库时使用) $app/mysql/support-files/mysql.server start # start-启动 restart-重新启动 sop-停止 #查看Mysql是否启动成功 ps -ef|grep mysql #修改mysql的root用户密码,root初始密码为空的 cd $app/mysql/bin ./mysqladmin -u root password '密码'