发布网友 发布时间:2022-04-30 00:38
共2个回答
懂视网 时间:2022-04-30 04:59
src]# md5sum mysql-5.6.25.tar.gz 37664399c91021abe070faa700ecd0ed mysql-5.6.25.tar.gz可以看出,与上图中的MD5是一致的,如果不一致,就要更换一个镜像地址来下载mysql。
首先检查是否已经安装过mysql:
[root@localhost src]# rpm -qa | grep mysql
有的话就卸载掉以前安装的mysql:
[root@localhost src]# rpm -e --nodeps xxx(xxx是搜索结果)
并删除所有的相关文件:
/etc/my.cnf
安装编译代码所需要的包
[root@localhost src]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio [root@localhost src]# yum install libaio libaio-devel -y [root@localhost src]# yum install perl-Data-Dumper -y [root@localhost src]# yum install net-tools -y
解压安装包并编译安装
[root@localhost src]# tar xvf mysql-5.6.25.tar.gz [root@localhost src]# cd mysql-5.6.25 [root@localhost mysql-5.6.25]#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
编译成功
[root@localhost src]# make && make install
至此,mysql安装完成
检查系统是否已经有mysql用户,如果没有则创建
[root@localhost mysql-5.6.25]# cat /etc/passwd | grep mysql [root@localhost mysql-5.6.25]# cat /etc/group | grep mysql
创建mysql用户(但是不能使用mysql账号登陆系统)
[root@localhost mysql-5.6.25]# groupadd mysql -s /sbin/nologin [root@localhost mysql-5.6.25]# useradd -g mysql mysql
修改权限
[root@localhost mysql-5.6.25]# chown -R mysql:mysql /usr/local/mysql
至此,mysql安装完毕
下面有两种配置方式,推荐按照多实例配置的方式
进入安装路径
[root@localhost mysql-5.6.25]# cd /usr/local/mysql
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表
[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
注意:在CentOS 7版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。
[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent [root@localhost mysql]# firewall-cmd --reload
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql [root@localhost mysql]# chkconfig mysql on [root@localhost mysql]# service mysql start --启动MySQL
查看mysql是否启动成功
[root@localhost mysql]# netstat -lntp | grep 3306
如果mysql没有启动成功,到目录/usr/local/mysql/data下查看错误日志
[root@localhost data]# tail localhost.localdomain.err (localhost.localdomain是主机名)
如果没有生成日志目录,则mysql安装没有成功(再重新编译安装一次)
首先杀死mysql进程
[root@localhost 3306]# pkill mysqld
然后检查是否已经杀死mysql进程
[root@localhost 3306]# netstat -lntp | grep 3306
此时shell没有任何输出,表明已经杀死了mysql进程
然后重启mysql并再次检查是否启动成功
[root@localhost 3306]# service mysql start [root@localhost 3306]# netstat -lntp | grep 3306
简单地说,就是在一台机器上开启多个不同的服务端口,运行多个mysql服务进程,这些服务进程通过不同socket监听不同服务端口来提供各自的服务。
这些mysql多实例公用一套mysql安装程序,使用不同的my.cnf配置文件、启动程序、数据文件,在提供服务时,多实例在逻辑上看起来是各自独立的,多个实例之间根据配置文件的设定值,来取得相关服务器的硬件资源
在本文中,通过在mysql上开启两个端口(3306和3307来配置多实例,因为下面的主从同步要使用这两个端口来模拟)
创建目录(log目录是存放mysql日志的地方)
[root@localhost mysql]# mkdir -p /data/{3306,3307}/data [root@localhost mysql]# mkdir -p /data/{3306,3307}/log
在/data/3306中新建my.cnf
[root@localhost mysql]# cd /data/3306 [root@localhost mysql]# vi my.cnf
把如下内容拷贝到该文件中
[client] port = 3306 socket = /data/3306/mysql.sock [mysqld] port=3306 socket = /data/3306/mysql.sock pid-file = /data/3306/data/mysql.pid basedir = /usr/local/mysql datadir = /data/3306/data server-id=1 #log-bin=mysql-bin #log-bin-index= mysql-bin.index # LOGGING log_error=/data/3306/log/mysql-error.log slow_query_log_file=/data/3306/log/mysql-slow.log slow_query_log=1
同样地,在/data/3307中新建my.cnf
[root@localhost mysql]# cd /data/3307 [root@localhost mysql]# vi my.cnf
把如下内容拷贝到该文件中(把上面的3306改为3307,还有server-id的值)
[client] port = 3307 socket = /data/3307/mysql.sock [mysqld] port=3307 socket = /data/3307/mysql.sock pid-file = /data/3307/data/mysql.pid basedir = /usr/local/mysql datadir = /data/3307/data server-id=3 #log-bin=mysql-bin #log-bin-index= mysql-bin.index # LOGGING log_error=/data/3307/log/mysql-error.log slow_query_log_file=/data/3307/log/mysql-slow.log slow_query_log=1
检查一下目录结构,看看有没有把文件放错地方
[root@localhost 3307]# tree /data /data ├── 3306 │ ├── data │ ├── log │ └── my.cnf └── 3307 │ ├── data │ ├── log │ └── my.cnf
创建启动文件
在/data/3306中新建mysql启动文件
[root@localhost mysql]# cd /data/3306 [root@localhost mysql]# vi mysql
把如下内容拷贝到该文件中
#!/bin/sh port=3306 mysql_user="root" mysql_pwd="" CmdPath="/usr/local/mysql/bin" #startup function function_start_mysql() { printf "Starting MySQL... " /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null & } #stop function function_stop_mysql() { printf "Stoping MySQL... " ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown } #restart function function_restart_mysql() { printf "Restarting MySQL... " function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart} " esac
同理,在/data/3307中新建mysql启动文件
[root@localhost mysql]# cd /data/3307 [root@localhost mysql]# vi mysql
把如下内容拷贝到该文件中
#!/bin/bash port=3307 mysql_user="root" mysql_pwd="" CmdPath="/usr/local/mysql/bin" #startup function function_start_mysql() { printf "Starting MySQL... " /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null & } #stop function function_stop_mysql() { printf "Stoping MySQL... " ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown } #restart function function_restart_mysql() { printf "Restarting MySQL... " function_stop_mysql sleep 2 function_start_mysql }
case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart} " esac
修改文件拥有者和权限
[root@localhost 3307]# chown -R mysql:mysql /data [root@localhost 3307]# find /data -name mysql -exec chmod 700 {} ;
添加mysql启动路径
[root@localhost 3307]# echo ‘export PATH=$PATH:/usr/local/mysql/bin‘ >>/etc/profile [root@localhost 3307]# source /etc/profile [root@localhost 3307]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
可以看到mysql路径已经添加到了启动路径中
[root@localhost scripts]# cd /usr/local/mysql/scripts [root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3306/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data [root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data
[root@localhost scripts]# firewall-cmd --zone=public --add-port=3306/tcp --permanent success [root@localhost scripts]# firewall-cmd --zone=public --add-port=3307/tcp --permanent success [root@localhost scripts]# firewall-cmd --reload success
分别启动两个端口
[root@localhost scripts]# /data/3306/mysql start Starting MySQL... [root@localhost scripts]# /data/3307/mysql start Starting MySQL...
[root@localhost scripts]# netstat -lntp | grep 330 tcp6 0 0 :::3306 :::* LISTEN 33556/mysqld tcp6 0 0 :::3307 :::* LISTEN 34204/mysqld
可以看到两个端口都已经启动成功
刚安装完的mysql是没有登陆密码的
[root@localhost scripts]# mysql -S /data/3306/mysql.sock
如果不成功,检查/data/3306/log目录下的mysql-error.log日志,逐一排除错误
如果登陆成功,下面就修改登录密码(不建议在shell环境下修改密码,否则别人只要查看命令历史就能看到密码(前提是你没有情况命令历史))
mysql> update mysql.user set password=password("123456") where user=‘root‘; mysql> flush privileges;
同理,使用上面的方法修改3307的登陆密码
要把上面更改后的密码写回到mysql的启动文件中(否则每次启动、关闭、重启mysql都要输入密码)
[root@localhost 3306]# sed -i ‘s/mysql_pwd=""/mysql_pwd="123456"/g‘ /data/3306/mysql [root@localhost 3306]# sed -i ‘s/mysql_pwd=""/mysql_pwd="123456"/g‘ /data/3307/mysql
注意把上面的123456改为设置的密码
[root@localhost 3306]# /data/3306/mysql restart [root@localhost 3306]# netstat -lntp | grep 330 tcp6 0 0 :::3306 :::* LISTEN 35430/mysqld
可以看到3306端口重启成功,同理可以重启3307端口
至此,mysql-5.6.25在CentOS7上安装完毕
tips:在我的github项目里,有一个一键安装mysql的脚本:https://github.com/Kylinlin/install_mysql_automatically 不过该脚本还不是很完善,同样地,有任何问题请发邮件到我的邮箱里。
CentOS7下源码安装mysql5.6
标签:
热心网友 时间:2022-04-30 02:07
可以,,具体参考教程 http://www.cnblogs.com/lunatic-cto/p/6123490.html