安装准备
1、cmake版本
5.7编译cmake要求版本最低为2.8,当前为2.6,所以需要升级cmake版本。信息如下
cmake --version
2、BOOST库
5.7编译需要boost类库,可使用 -DDOWNLOAD_BOOST=1 -DWITH_BOOST= 参数将在指定路径查找,如未找到会指定下载并解压到指定的路径
tar zxvf boostXXX
tar jxvf boost_1_59_0.tar.bz2
cd boost_1_61_0
./bootstrap.sh
./b2 install
等了好久好久,中间也有很多报错警告之类的
...failed updating 58 targets...
...skipped 12 targets...
...updated 14195 targets...
大致这样就结束了。。
安装后目录:/usr/local/include
3.安装gcc,gcc-c++,ncurses,ncurses-devel
4. 创建mysql的安装目录及数据库存放目录
#mkdir -p /opt/modules/mysql //安装mysql目录
#mkdir -p /opt/modules/mysql/data //存放数据库目录
5.创建mysql用户及用户组
#groupadd mysql //创建用户组
#useradd -r -g mysql mysql //创建mysql用户组内mysql用户
开始安装
解压mysql包
cmake -DCMAKE_INSTALL_PREFIX=/opt/modules/mysql -DENABLE_DOWNLOADS=1
报错:
1、-- Could NOT find Git (missing: GIT_EXECUTABLE)
这项应该缺少git包,yum install -y git/
2、 Boost minor version found is 61 we need 59
版本安高了,去官网上重新下了个59版本的。。再编译安装
3、Googlemock was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source.
使用参数-DENABLE_DOWNLOADS=1 自动下载
4、Performing Test HAVE_UNUSED_TYPEDEFS - Failed
好像没事
5、Bison executable not found in PATH
yum install -y bison
make
我的天呢,等了好久好久好久。。
make install
安装成功~
配置
1、设置目录权限
chown -R root:mysql . 把当前目录中所有文件的所有者所有者设为root,所属组为mysql
chown -R mysql:mysql data
2、将mysql的启动服务添加到系统服务中
cp support-files/mysql.server /etc/init.d/mysql
注意:主要是将mysql.server拷贝到/etc/init.d中,命名为mysql。
有的系统中,mysql.server在/opt/modules/mysql/share/mysql/mysql.server中
有的系统中,mysql.server在/opt/modules/mysql/support-files/mysql.server中
3、生成授权表
/opt/modules/mysql/bin mysql_install_db
执行: ./mysql_install_db --user=mysql
报错:
1、[ERROR] The data directory needs to be specified.
指定了数据目录 --datadir=/opt/modules/mysql/data/
继续报错:The data directory '/opt/modules/mysql/data/' already exist and is not empty.
改回之前,完整的报错:
[WARNING]mysql_install_db is deprecated.Please consider switching to mysqld --initialize
[ERROR] The data directory needs to be specified.
大概意思: mysql_install_db 已经不再推荐使用了,建议改成 mysqld –initialize 完成实例初始化
改为:./mysqld --user=mysql --datadir=/opt/modules/mysql/data/ --basedir=/opt/modules/mysql
有报错
[ERROR] Could not create unix socket lock file /var/lib/mysql/mysql.sock.lock.
[ERROR] Unable to setup unix socket lock file.
[ERROR] Aborting
目录不存在或者权限不足,所以我们直接使用命令
mkdir -p /var/log/mysql/ 创建目录
chown -R mysql:mysql /var/log/mysql/ 设置权限
重新执行:./mysqld --user=mysql --datadir=/opt/modules/mysql/data/ --basedir=/opt/modules/mysql
http://blog.csdn.net/lqx0405/article/details/48373005 新增表空间
2、[ERROR] Can't read from messagefile '/usr/share/mysql/english/errmsg.sys'
将源码包里面的sql/share/english/errmsg.sys复制到/usr/share/mysql/errmsg.sys
生成授权表实际上是完成了mysql的初始化。你在执行这个脚本之后,mysql里就会出现名为mysql的库。mysql库里有常用的权限表等系统表。比如设置用户权限的user表。
后面的参数--user所指定的用户是你想要运行mysqld进程用户名。这个是可变的,不一定非要是mysql。设置这个用户以后,所有通过mysqld进程创建的文件都会属于这个用户。网上的教程里多用mysql用户是为了在生产环境中更方便管理。
linux系统默认用户(比如root)也是可以的。但是在生产环境中,一般只需要将日志的路径(配置文件中日志的路径),和数据文件路径(datadir参数)设置为mysql用户就可以了。(这个不同的公司也有不同的设置,但是简单来说是这样的。)
上面说的其实都是linux系统权限管理的内容。有些文件,比如你不希望其他用户看到的文件,或者只有指定用户可写的文件,就可以设定成某个特殊用户。至于你后面问的所属组的问题。这个也是权限管理的一部分。比如说,一个文件的用户权限是root,组权限是mysql,这样的文件就只能root用户和mysql组里的用户访问。
不设置用户和所属组,也并不影响使用。因为linux默认用户是root。mysql的基本权限就都涵盖了。
因此可以这样理解:用户和用户组的作用一般是为了在生产过程中进行系统级的权限管理。
开启mysql服务
Starting MySQL...... ERROR! The server quit without updating PID file (var/lib/mysql/localhost.localdomain.pid).