编译安装MySQL# 添加MySQL用户
$ useradd -s /sbin/nologin -M mysql
# 切换到/usr/src目录
$ cd /usr/local/src
# 下载MySQL
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28.tar.gz
# 解压MySQL
$ tar -zxvf mysql-5.7.28.tar.gz
#解压boost,并移至mysql/boost
$ tar -zxvf boost_1_59_0.tar.gz
$ mv boost_1_59_0 mysql-5.7.28/boost
# 进到MySQL目录
$ cd mysql-5.7.28
# 预编译
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.28 \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 \
-DWITH_SSL=system \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_DATADIR=/var/lib/mysql/data \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_INNODB_MEMCACHED=1 \
-DWITH_DEBUG=OFF \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=ON \
-DMYSQL_MAINTAINER_MODE=OFF \
-DMYSQL_TCP_PORT=3306
# 编译&安装
$ make && make install
# 创建软链接
$ cd /usr/local
$ ln -s mysql-5.7.28 mysql
配置环境变量# 添加到环境变量
$ vim /etc/profile
$ export PATH=/usr/local/mysql/bin:$PATH
$ source /etc/profile
修改配置文件在/var/lib目录下创建一个mysql文件夹$ mkdir -p /var/lib/{mysql,mysql/data}
$ touch /var/lib/mysql/mysqld.pid
$ chown mysql.mysql -R /var/lib/mysql/
修改/etc/my.cnf文件# 修改/etc/my.cnf文件,编辑配置文件如下
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
[client]
default-character-set=utf8mb4
创建mysqld.log 和 mysqld.pid文件,并修改文件权限# 创建mysqld.log 和 mysqld.pid文件
$ mkdir /var/log/mysql
$ touch /var/log/mysql/mysqld.log
$ chown mysql.mysql -R /var/log/mysql/
初始化数据库# 初始化数据库, –initialize 表示默认生成一个安全的密码,–initialize-insecure 表示不生成密码
$ mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql/data
Systemd管理
创建一个/usr/lib/systemd/system/mysqld.service文件,然后编辑内容如下$ vim /usr/lib/systemd/system/mysqld.service[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/var/lib/mysql/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/lib/mysql/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=/etc/my.cnf
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=true
重载daemon
执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可$ systemctl daemon-reload
启动MySQL$ systemctl start mysqld.service # 启动MySQL
$ systemctl stop mysqld.service # 关闭MySQL
$ systemctl status mysqld.service # 查看MySQL状态
开机自启$ systemctl enable mysqld.service # 设置开机自启
$ systemctl disable mysqld.service # 取消开机自启
登录MySQL$ mysql -u root -p #第一次登陆不需要密码,回车即可
$ set password for root@localhost = password('root'); #修改密码