centos 源码mysql5.6_CentOS 6.5 源码安装 mysql 5.6

CentOS 6.5下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.40。

1. 卸载旧版本

使用下面的命令检查是否安装有MySQL Server

rpm -qa | grep mysql

如果有的话通过下面的命令来卸载掉

普通删除模式

rpm -e mysql

强力删除模式 : 如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

rpm -e --nodeps mysql

2. 添加组和用户及安装目录权限

#添加组

sudo groupadd mysql

#创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统

sudo useradd -g mysql mysql -s /bin/false

#创建MySQL安装目录

sudo mkdir -p /usr/local/mysql

#创建MySQL安装目录

sudo mkdir -p /usr/local/mysql/data

#设置MySQL数据库目录权限

sudo chown -R mysql:mysql /usr/local/mysql/data

3. 安装MySQL

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel

记住下载的是源码包:

源码包的名称为 : mysql-5.6.40.tar.gz

如果你现在的包名为 : mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz 说明下载的为编译版。

#解压缩

tar xvf mysql-5.6.14.tar.gz

#进入mysql目录

cd mysql-5.6.14

运行cmake命令:

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

注:如果cmake过程中出错,需要删除 CmakeCache.txt文件 --> rm -f CmakeCache.txt

编译安装:

make && make install

注:出错后重新运行配置,需要删除 CMakeCache.txt文件

#

make clean

# 删除 CMakeCache.txt 文件

rm -f CMakeCache.txt

编译的过程中 如果安装的是 mysql5.7, 卡在 geofunc.cc.o 获取其他地方 可能是内存不足,需要重新设置内存大小,(可以给2-4G 就没有问题了) 重新编译和安装

编译参数参考 5.7  5.6

4. 多实例配置

创建多个实例,其实就是把DATA文件,SOCK,  PORT指向不同的文件和端口,安装过程与单例安装相同,此处以mysql5.6为例

创建不同的实例目录:dbdata_3306 dbdata_3307 dbdata_3308

/usr/local/mysql/data/dbdata_3306

/usr/local/mysql/data/dbdata_3307

/usr/local/mysql/data/dbdata_3308

注:也可以在/data目录下创建,个人喜好

初始化配置:

#进入安装路径

cd /usr/local/mysql

#进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表, 分别执行下面三条命令

scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3306 --user=mysql

scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3307 --user=mysql

scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3308 --user=mysql

编辑/etc/my.cnf (如果没有从mysql目录拷贝)

用mysqld_multi工具查看该配置文件的模板,命令为:mysqld_multi --example

[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user = admin

password = password

[mysqld1]

socket = /usr/local/mysql/data/dbdata_3306/mysql3306.sock

port = 3306

pid-file = /usr/local/mysql/data/dbdata_3306/mysql3306.pid

datadir = /usr/local/mysql/data/dbdata_3306

#language = /usr/local/mysql/share/mysql/english

user = mysql

[mysqld2]

socket = /usr/local/mysql/data/dbdata_3307/mysql3307.sock

port = 3307

pid-file = /usr/local/mysql/data/dbdata_3307/mysql3307.pid

datadir = /usr/local/mysql/data/dbdata_3307

#language = /usr/local/mysql/share/mysql/english

user = mysql

[mysqld3]

socket = /usr/local/mysql/data/dbdata_3308/mysql3308.sock

port = 3308

pid-file = /usr/local/mysql/data/dbdata_3308/mysql3308.pid

datadir = /usr/local/mysql/data/dbdata_3308

#language = /usr/local/mysql/share/mysql/english

user = mysql

5. mysql 启动 关闭 其他设置

查看mysql运行状态

/usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf report

#或

/usr/local/mysql/bin/mysqld_multi report

注:详见--defaults-file  --defaults-extra-file 等区别,此处省略该项 直接report即可

如果执行 /usr/local/mysql/bin/mysqld_multi 有提示错误:

my_print_defaults command not found.Please make sure you have this command available andin your path. The command is available from the latest MySQL distribution.

ABORT: Can't find command 'my_print_defaults'.This command is available from the latest MySQL,distribution. Please make sure you have the command in your PATH.

就是没有设置mysql 的环境变量

[root@localhost data]# vim /etc/profile

在文件末尾处添加

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

然后执行命令

[root@localhost data]# source /etc/profile

如果没有启动,则启动mysql

/usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start

#或

/usr/local/mysql/bin/mysqld_multi start

#或

mysqld_safe --user=mysql --datadir=/usr/local/mysql/data/dbdata_3306 --port=3306 --socket=/usr/local/mysql/data/dbdata_3306/mysql3306.sock &

start后不跟序号,则代表启动全部实例,如果想启动某一个或某些实例:

/usr/local/mysql/bin/mysqld_multi  start 1

查看相应端口是否已经被监听

netstat -tunlp  | grep mysql

查看是否有活动进程

ps -aux | grep mysql

登陆数据库这里已3306端口的数据可为例

mysql -uroot -p -h127.0.0.1 -P3306

#或通过sock文件登陆

mysql -uroot -p -S /usr/local/mysql/data/dbdata_3306/mysql3306.sock

#或通过sock文件登陆

mysqladmin -uroot -p -S /usr/local/mysql/data/dbdata_3306/mysql3306.sock

提示输入密码时,回车即可,默认root无密码

查看socket文件

mysql> SHOW VARIABLES LIKE 'socket';

查看pid文件

mysql> SHOW VARIABLES LIKE '%pid%';

查看数据,确认 用的mysql_330?哪个文件夹的数据

mysql>show variables like '%datadir%';

设置root用户本地密码

mysql> SET PASSWORD = PASSWORD('123456');

#或 (下面的更直观一些)

set password for root@localhost = password('123456');

设置root用户远程访问权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Tgn2788210' WITH GRANT OPTION;

注: Tgn2788210为远程访问时root用户的密码,可以和本地不同。

添加用户,给予关闭权限(用于关闭数据库)

#该用户的账号admin与密码password 与 /etc/my.cnf中[mysqld_multi]相同 用于关闭数据库

mysql> GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password';

#生效

mysql> flush privileges;

注: 3307 3308 端口的数据可 使用相同的方式 设置root用户 与 关闭数据库的用户admin

注: 登录后应当首先设置root密码,处于安全考虑,还需要删除系统中没有密码的帐号。

mysql> use mysql;

mysql> delete from user where password is null or password = '';

关闭 mysql 数据库

#(推荐)

mysqladmin -uroot --port=3306 --socket=/usr/local/mysql/data/dbdata_3306/mysql3306.sock -p shutdown

#或

mysqld_multi stop --password=password

#或 不建议使用

killall mysqld

注:使用musqld_multi stop关闭数据库,需要事先设置有shutdown权限的账户和密码,并写入my.cnf文件中,参见  mysqld_multi stop is not working

6. 防火墙配置

防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口

vim /etc/sysconfig/iptables

在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:

#mysql 3306

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

#mysql 3307

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3307 -j ACCEPT

#mysql 3308

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3308 -j ACCEPT

然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:

service iptables restart

7. 安装 5.7版本 多实例 mysql

7.1 cmake 不同

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DWITH_BOOST=/usr/local/boost/ \

-DDEFAULT_COLLATION=utf8_general_ci

区别:

5.7 以后没有这两个选项

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

5.7 以后新增选项

-DWITH_BOOST=/usr/local/boost/boost_1_59_0

直接手动下载在boost目录中解压,boost目录需手动创建,如果出现 cmake编译MySQL时报错:the source directory "xxx" does not exist ,应该是空格与换行的问题, \ 代表换行。

从mysql 5.7.5以后Boost库是必需的,下载Boost库,在解压后复制到/usr/local/boost目录下 然后重新cmake并在后面的选项中加上选项 -DWITH_BOOST=/usr/local/boost  可以到 boost下载,如果没有,会报 参见--> cmakeError

7.2 初始化数据库 命令不同

5.7版本 使用 mysqld命令进行初始化

mysqld  --initialize --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3306 --user=mysql

注:在初始化时如果加上 --initial-insecure,则会创建空密码的 root@localhost账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中(在5.6版本中是放在 ~/.mysql_secret 文件里,更加隐蔽,不熟悉的话可能会无所适从)

8. mysql 5.6  5.7 单实例安装

1.  不需要创建 dbdata_3306等实例目录,初始化时 直接使用/usr/local/mysql/data 即可

2. 不需要使用/etc/my.cnf 文件

在启动MySQL服务时,会按照一定次序搜索my.cnf,首先会先在/etc目录下找该文件,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置;在CentOS 6.5版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。

3. 启动mysql

添加服务,拷贝服务脚本到init.d目录,并设置开机启动

cp support-files/mysql.server  /etc/init.d/mysql

chkconfig mysql on

service mysql start  -- 启动MySQL

推荐使用修改 rc.local 文件

9. mysql 编译版安装(可单实例,可多实例)

1. 下载编译版 mysql 解压,移动,重命名

tar -zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql

2. 创建 linux 用户 -->  mysql 并赋予该用户相应权限

3. 初始化 mysql (如果是多实例安装,提前创建多实例目录 dbdata_3306 等)

10. 多实例mysql 开机自启动

修改rc.local文件,添加以下内容

/usr/local/mysql/bin/auto-startup.sh

auto-startup.sh 内容为

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

/usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf  start

必须引入环境变量,否则报错,具体信息可以改变 rc.local脚本

/usr/local/mysql/bin/auto-startup.sh >> /root/debug.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值