centos7下安装Mysql5.6(源码方式)

Mysql安装和配置

我使用源码编译的形式来安装mysql,使用的mysql5.6。
1.下载

wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.40.tar.gz

2.卸载自带mysql
因为mysql收费了,所以centos7.4内部默认不再集成mysql,而是集成mariadb。安装mysql会和mariadb的文件冲突,所以需要先卸载mariadb

#列出安装的mysql。
rpm -qa | grep mariadb   ###显示mariadb-libs-5.5.56-2.el7.x86_64

#卸载
rpm -e mariadb-libs-5.5.56-2.el7.x86_64

####会报如下错误
error: Failed dependencies:
    libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
    libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
#强制卸载
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

#检查是否有遗留文件。如果有删除即可。
ls /etc/my.cnf
ll /var/lib/mysql/  ll /var/lib64/mysql(64位)

3.安装各种依赖

yum install gcc gcc-c++
yum install ncurses-devel.x86_64
yum install cmake.x86_64
yum install libaio.x86_64
yum install bison.x86_64
#Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
yum -y install ncurses-devel

#和上面有重复的,我这里是网上抄来的
yum -y install make gcc-c++ cmake bison-devel  ncurses-devel gcc \ 
       autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel*

4.指定编译条件
mysql5.5版本之前都是通过./configure进行编译环境检查,mysql5.5之后(含5.5)用的是cmake

cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/usr/local/mysql/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DMYSQL_TCP_PORT=3306 \  

#-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
# 注意使用utf8mb4无法通过编译检查 \  
#-DDEFAULT_CHARSET=utf8 \  
#-DDEFAULT_COLLATION=utf8_general_ci \  
#-DENABLED_LOCAL_INFILE=1 \

各配置选项的含义,可参考mysql官方文档:
https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

# 【MySQL安装的根目录】默认/usr/local/mysql
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
# 【存放数据的目录】 可以在mysql启动时通过--datadir选项设置。
-DMYSQL_DATADIR=/usr/local/mysql/data
# 【MySQL的sock文件目录】mysql服务器用于监听的套接字,必需是绝对路径,默认是/tmp/mysql.sock。
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
# 【默认的my.cnf文件目录】。该值在mysql启动时不能设置。但是可以使用--defaults-file=file_name(文件的全路径名)选项来使用指定的配置文件。
-DSYSCONFDIR=/usr/local/mysql/etc
# 【PID文件目录】默认为/var/run/mysqld。使用systemd来管理mysql时会在该目录下创建pid文件。
-DSYSTEMD_PID_DIR=/usr/local/mysql
# 【监听端口】
-DMYSQL_TCP_PORT=3306 \ 

# 【【编译检查不能通过】】
#-DDEFAULT_CHARSET=utf8mb4
#-DDEFAULT_COLLATION=utf8mb4_unicode_ci
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci

# 允许从本地导入数据
-DENABLED_LOCAL_INFILE=1                                    

说明:关于设置utf8mb4无法通过编译检查的说明,可参考这篇博客说明:https://yq.aliyun.com/articles/586650

4.编译安装


# 编译。(mysql编译相当的慢。我在阿里云单核2g ECS上要了差不多七八分钟)
make 
# 安装
make install

5.初始化数据库

#执行脚本,来创建系统自带的数据库和表

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

##上面如果报错,则安装autoconf库
yum -y install autoconf

6.创建用户组、用户

#创建mysql组
groupadd mysql
#创建mysql用户
useradd -r -g mysql mysql

7.设置开机启动

vim /usr/lib/systemd/system/mysqld.service

加入以下内容

[Unit]
Description=MySQL5.6
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target syslog.target

[Service]
Type=forking
#强烈建议在 Type=forking 的情况下明确设置此选项
PIDFile=/usr/local/mysql/mysqld.pid
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf

User=mysql
Group=mysql
PrivateTmp=true
[Install]
WantedBy=multi-user.target

每次修改了该文件,记得要执行以下命令

systemctl daemon-reload

8.设置开机启动

#设置开机启动
systemctl enable mysqld

#启动mysql
systemctl start mysqld

9.防火墙开放3306端口

firewall-cmd  --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

10.mysql安全
执行命令,重置密码 mysql_secure_installation

#会依次出现以下问题。

Set root password? [Y/n]
是否设置root用户的密码 (y。【设置登录密码】)

Remove anonymous users? [Y/n]
是否删除匿名用户 (y)

Disallow root login remotely? [Y/n]
是否禁止root远程登录 (n)

Remove test database and access to it? [Y/n]
是否删除database数据库

Reload privilege tables now? [Y/n]
是否重新加载授权信息 (y)

11.开启root远程登录
默认只允许root帐户在本地登录,如果要远程连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户。

# 开放Root远程连接权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '远程登录密码' WITH GRANT OPTION;

FLUSH PRIVILEGES;

# 创建新用户用于远程连接
GRANT ALL PRIVILEGES ON *.* TO '新用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

FLUSH PRIVILEGES;

12.my.cnf配置

[client]
default-character-set = utf8mb4

[mysql] 
default-character-set = utf8mb4

[mysqld]
#配置默认编码为utf8
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect=’SET NAMES utf8mb4’

#表名不区分大小写
lower_case_table_names=1

#数据库错误日志文件
log_error=/usr/local/mysql/logs/error.log

13.设置环境变量(可选)
设置环境变量,然后就可以在bin目录之外执行mysql的相关命令。

#打开profile文件
vim /etc/profile

#在文件末尾添加。保存
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOEM/bin

#刷新配置
source /etc/profile

你可能感兴趣的:(linux,数据库)