1.实验环境
1.1 虚拟机版本
1.2 CentOS版本
下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/
[root@WINDS ~]# uname -r
3.10.0-693.el7.x86_64
[root@WINDS ~]# more /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
1.3 MySql版本
下载地址:https://downloads.mysql.com/archives/community/
2.更新系统及安装依赖
2.1 更新系统
[root@WINDS ~]# yum update
2.2 安装依赖
[root@WINDS ~]# yum -y install wget make cmake gcc gcc-c++ ncurses ncurses-devel \
libaio-devel openssl openssl-devle perl bison-devel libaio libaio-devel
3.创建 mysql 用户组和用户
# 创建用户组和用户
[root@WINDS ~]# groupadd mysql
[root@WINDS ~]# useradd -r -g mysql -s /bin/false mysql
# 修改密码
[root@WINDS ~]# passwd mysql
Changing password for user mysql.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
# 查看用户和组
[root@WINDS ~]# more /etc/group | grep mysql
mysql:x:1001:
[root@WINDS ~]# more /etc/passwd | grep mysql
mysql:x:1001:1001::/home/mysql:/bin/false
4.创建安装目录和数据目录
# 创建所需目录和文件
[root@WINDS ~]# mkdir -p /usr/local/mysql
[root@WINDS ~]# mkdir -p /data/mysql
[root@WINDS ~]# mkdir /var/log/mariadb
[root@WINDS ~]# mkdir /var/run/mariadb
[root@WINDS ~]# touch /var/log/mariadb/mariadb.log
[root@WINDS ~]# touch /var/run/mariadb/mariadb.pid
# 顺带修改目录和文件权限
[root@WINDS ~]# chown -R mysql:mysql /usr/local/mysql
[root@WINDS ~]# chown -R mysql:mysql /data/mysql
[root@WINDS ~]# chmod -R 770 /usr/local/mysql
[root@WINDS ~]# chmod -R 770 /data/mysql
[root@WINDS ~]# chown -R mysql:mysql /var/log/mariadb
[root@WINDS ~]# chown -R mysql:mysql /var/run/mariadb
[root@WINDS ~]# chmod 770 /var/log/mariadb/mariadb.log
[root@WINDS ~]# chmod 770 /var/run/mariadb/mariadb.pid
5.下载源码包
[root@WINDS ~]# cd /usr/local/src
[root@WINDS src]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.16.tar.gz
6.解压并安装
6.1 解压
[root@WINDS src]# tar -zxv -f mysql-boost-5.7.16.tar.gz
[root@WINDS src]# ls -l | grep mysql
total 257968
drwxr-xr-x. 38 7161 31415 4096 Mar 25 21:31 mysql-5.7.16
-rw-r--r--. 1 root root 60556473 Sep 28 2016 mysql-boost-5.7.16.tar.gz
6.2 安装
[root@WINDS src]# cd mysql-5.7.16/
[root@WINDS mysql-5.7.16]# cmake -DDOWNLOAD_BOOST=1 \
-DWITH_DEBUG=1 \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DWITH_BOOST=/usr/local/boost \
-DSYSCONFDIR=/etc/my.cnf \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DMYSQL_TCP_PORT=3306
[root@WINDS mysql-5.7.16]# make && make install
更多配置信息查看官方文档:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
7.修改 /etc/my.cnf 文件配置
[root@WINDS mysql-5.7.16]# mv /etc/my.cnf /etc/my.cnf.bk
[root@WINDS mysql-5.7.16]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
[root@WINDS mysql-5.7.16]# vim /etc/my.cnf
[mysqld]
server-id=1
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
8.初始化数据库
需要进入 /usr/local/mysql/bin/ 目录下
[root@WINDS mysql-5.7.16]# cd /usr/local/mysql/bin/
[root@WINDS bin]# ./mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/data/mysql
# 生成临时密码
# [Server] A temporary password is generated for root@localhost: lzW0HaCaum&z
9.启动MySql
9.1 配置启动服务
[root@WINDS bin]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@WINDS bin]# chkconfig --add mysqld
[root@WINDS bin]# chkconfig mysqld on
9.2 启动MySql
[root@WINDS bin]# service mysqld start
Starting MySQL.... SUCCESS!
[root@WINDS bin]# ps aux | grep mysql
root 130216 0.1 0.0 11820 1580 pts/1 S 22:05 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/WINDS.pid
mysql 130427 4.4 9.4 1541780 177088 pts/1 Sl 22:05 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mariadb/mariadb.log --pid-file=/data/mysql/WINDS.pid --socket=/tmp/mysql.sock --port=3306
root 130457 0.0 0.0 112712 964 pts/1 S+ 22:06 0:00 grep --color=auto mysql
10.修改账号密码
此处输入步骤8生成的密码
[root@WINDS bin]# ./mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.16-debug
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.00 sec)
修改密码方法:
(1). set password='root';
(2). alter user 'root'@'localhost' identified by 'root';
(3). set password = password('root');
11.修改环境变量
在 .bash_profile 最后增加如下两行
[root@WINDS bin]# cd ~
[root@WINDS ~]# vi .bash_profile
# add by mysql
PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
export PATH
验证:现在可以直接使用 mysql 命令
[root@WINDS ~]# source .bash_profile
[root@WINDS ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.16-debug Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
12.远程连接MySql
查看当前用户信息
mysql> use mysql;
mysql> select host,user from user;
+-----------+-----------+
| host | user |
+-----------+-----------+
| localhost | mysql.sys |
| localhost | root |
+-----------+-----------+
2 rows in set (0.00 sec)
增加一个远程账号
# @% 表示接受所有IP访问,可以设置为固定IP
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
# 刷新权限
mysql> flush privileges;
mysql> select host,user from user;
+-----------+-----------+
| host | user |
+-----------+-----------+
| % | root |
| localhost | mysql.sys |
| localhost | root |
+-----------+-----------+
3 rows in set (0.00 sec)
设置防火墙
[root@WINDS ~]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
重启数据库
[root@WINDS ~]# service mysqld restart
Shutting down MySQL.... SUCCESS!
Starting MySQL. SUCCESS!
在windows中开启一个cmd窗口