Mysql cmake 编译安装、

基于cmake的mysql安装

1.1 前言

从mysql5.5起,mysql源码安装的编译工具configure开始向cmake过渡。安装方式和之前的略有不同。在这里简单介绍总结下。
安装之前,检查下GNU make, GCC, Perl, libncurses5-dev,cmake-2.8.4是否都已经安装,如果没有安装,用yum install 安装补全

1.2 安装Cmake

进入源代码目录

tar zxvf cmake-2.8.4.tar.gz

安装

cd cmake-2.8.4
./bootstrap
gmake
gmake install

1.3 cmake简介

CMake 是"cross platform make"的缩写。它是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。和之前configure的语法对比如下重新编译时,需要清除旧的对象文件和缓存信息
对于configure 需要执行如下命令
make clean
对于cmake,则需要执行如下命令
rm -f CMakeCache.txt

安装选项的对比如下:

CMAKE_INSTALL_PREFIX值是安装的基本目录,其他cmake选项值是不包括前缀,是相对路径名,绝对路径包括CMAKE_INSTALL_PREFIX路径。

configure编译插件选项

--with-plugins=csv,myisam,myisammrg,heap,innobase, archive,blackhole

在cmake中没有直接对应的相同选项。对于csv,myisam,myisammrg,heap在cmake中是不需要明确指定存储引擎的名称,因为它们是强制性安装。

可以使用以下选择来安装innodb,archive,blackhole存储引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
(1可以使用on代替)

1.4 安装bison-2.5

进入源代码目录

解压缩

tar zxvf bison-2.5.tar.gz

安装

cd bison-2.5
./configure
make
make install

1.5 Mysql安装

创建mysql用户和组

/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data

解压缩进入安装目录

tar xvf mysql-5.5.27.tar.gz
cd mysql-5.5.27

编译

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_USER=mysql

安装

Make&&make install

1.6 安装后

1.6.1 链接文件

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

不执行这一步,运行时可能如下错误

error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

1.6.2 设置PATH环境变量

Vi  /etc/profile

在profile最后加上

export PATH=”/usr/local/mysql/bin:$PATH”

保存后

source  /etc/profile

1.6.3 配置参数文件

cd support-files 
cp my-large.cnf /etc/my.cnf

编辑my.cnf,加入以下内容

basedir         = /usr/local/mysql
datadir         = /usr/local/mysql/data
log-error       = /usr/local/mysql/data/mysql_error.log
pid-file        = /usr/local/mysql/data/mysql.pid
socket         =/usr/local/mysql/data/mysql.socket //如果已经有,则修改目录为mysql的数据目录,此处是/usr/local/mysql/data

1.6.4 设置权限

cd /usr/local/mysql
chown –R mysql .
chgrp –R mysql .

1.6.5 mysql 初始化安装

cd /usr/local/mysql/
scripts/mysql_install_db \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql \
--user=mysql \
如果产生错误like:‘WARNING: The host ‘*‘ could not be looked up with resolveip’
执行时加上 –force 选项

1.6.6 修改权限

将安装目录所有权改为root,数据目录的所有权改为你运行mysqld的用户

cd /usr/local/mysql
chown -R root .
chown -R mysql data

1.7 配置服务

配置服务

cd  /usr/local/mysql/support-files
cp mysql.server  /etc/init.d/mysqld
chmod +x  /etc/init.d/mysqld
chkconfig  --add mysqld
chkconfig  --level 345 mysqld on

1.8 启动与停止 mysql

systemctl start mysqld
systemctl stop mysqld

1.9 设置Mysql用户账号密码

mysql安装后默认生成两个帐号:一个是root,未设置密码,可以从本机登录到mysql;另一个是匿名帐号,无帐号名、无密码,可以从本机登录,未提供用户名的连接都将假定为此帐号。这样的设置存在着安全隐患,按下面的步骤进行更改。

1) 修改root的密码

执行命令:/usr/local/mysql/bin/mysqladmin –u root –p旧密码 password 新密码或者用root登录数据库
 mysql –u root
登录以后执行
Mysql>set password for ‘root’@’hostname’=password(‘新密码’);或者执行
Mysql>update mysql.user set password=password(‘新密码’)  
—>where user = ‘root’ and host =’hostname’;
如果不知道hostname,可先执行select host,user from mysql.user where user=’root’

2) 删除匿名用户

Root 登录后执行

mysql> delete from mysql.user where user=’’ ; 删除用户名为空的记录
mysql> delete from mysql.user where password=’’ ; 删除密码为空的记录

3) 修改完用户权限以后,执行

Mysql> flush privileges;
因为MySQL启动后,所有用户权限都是加载到内存中的;但有些权限更新操作不会刷新到内存中,这样只有下次启动时才生效,如果直接update mysql.user来修改密码等;flush privileges 强制让MySQL重新加载权限,这样刚才修改的就马上生效了。

4) 添加用

1.10 my.cnf 配置文件修改

在my.cnf文件client下增加user, password。
修改socket路径,为真实路径。

原创文章,作者:N27_Danry,如若转载,请注明出处:http://www.178linux.com/85636

(2)
N27_DanryN27_Danry
上一篇 2017-08-29 17:27
下一篇 2017-08-30 15:25

相关推荐

  • 三剑客之sed

    sed命令:Stream EDitor 流编辑器 sed命令的工作流程:     sed会复制原文件中的一行或者多行,逐行进行操作。首先会将该行的内容放入到模式空间内,在模式空间内进行定界或者正则表达式匹配操作。     a.如果该行内容不符合正则表达式或定界,该内容则被判断为No,进行标准输出。 &nbsp…

    Linux干货 2016-08-08
  • 计算机网络基础

    计算机网络基础 分层的网络模型 网络发展到今天,规模很庞大,内容很复杂,不利于网络的管理和教学。网络分层可以:降低网络结构的复杂性、把各层的接口标准化、简化模块设计、确保技术的互操作性、加快发展速度以及简化教学过程。 OSI模型——国际标准:根据国际标准化组织( ISO,International Standards Orgnization)提案,计算机网络…

    Linux干货 2016-11-22
  • bash中的算术运算及条件测试

    bash的算术运算 +, -, *, /, %取模(取余), **(乘方) 实现算术运算: (1) let var=算术表达式 (2) var=$[算术表达式] (3) var=$((算术表达式)) (4) var=$(expr arg1 arg2 arg3 …) (5) declare –i var = 数值 (6) echo ‘算术表达式’ …

    Linux干货 2017-04-17
  • 面向对象的实例方法,类方法和静态方法

    类方法和静态方法 普通函数 class Person: def normal_method(): print(‘normal’) Person.normal_method() # Person().normal_method() print(Person.__dict__) Person.normal_method()可以,是因为这个方法只是被Person这…

    2017-11-11
  • linux的tty

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/140012 最近做了一个小测试,得到了以下结论 测试linux发行版本:rhel AS4.0 环境:VMware 5.0 目的:修改 vi /etc/initt…

    Linux干货 2015-03-26
  • Linux之bash shell脚本编程入门篇(一)

    什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell。至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件)。不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好;组合目的…

    Linux干货 2016-08-15