安装环境:rhel7.6
Mysql
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
下载及安装
安装方式有多种
可在官网https://www.mysql.com下载rpm包,也可以下载源码包。
此次下载我们下载源码包,使用源码编译的方式进行安装。
磁盘容量要求:
mysql压缩包及解压包的大小已经算是很大了压缩包266M,解压包839M,编译完成后更是达到9.9G,安装的mysql 2.2G。
[root@server1 mnt]# du -sh mysql-boost-8.0.21.tar.gz
266M mysql-boost-8.0.21.tar.gz
[root@server1 mnt]# tar zxf mysql-boost-8.0.21.tar.gz
[root@server1 mnt]# du -sh mysql-
mysql-8.0.21/ mysql-boost-8.0.21.tar.gz
[root@server1 mnt]# du -sh mysql-
mysql-8.0.21/ mysql-boost-8.0.21.tar.gz
[root@server1 mnt]# du -sh mysql-8.0.21/
893M mysql-8.0.21/
编译:
首先在解压包里创建一个新的目录biuld,来存放编译产生的文件
进入到biuld中,
mysql使用cmake进行编译:
-
首先确认你的cmake版本大于等于3.5:rhel7.6自带的cmake版本
版本太低,需要安装更高版本的cmake
安装方法:在阿里云镜像站上下载cmake3.6的rpm包
在安装的过程中遇到依赖性
jsoncpp-devel
jsoncpp-cpp
(可在阿里云镜像站上找到) -
需要gcc-c++(yum安装)
-
确认gcc版本为5.8以上
rhel7自带的gcc版本不够,须下载更高版本
可在centos中找到,所以配置Centos的yum源;
[base]
name=CentOS-os
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
gpgcheck=0
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=0
配置好了之后,进行安装gcc:
yum install devtoolset-7-gcc* -y
执行命令scl enable devtoolset-7 bash使之生效。
在biuld目录中进行编译:
cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ##安装路径\
-DMYSQL_DATADIR=/data/mysql ##指定数据目录 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock##指定套接字文件 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 ##使用innodb引擎\
-DSYSCONFDIR=/etc ##指定配置目录\
-DENABLED_LOCAL_INFILE=1 ##支持本地大文件导入数据\
-DWITH_EXTRA_CHARSETS=all ##支持外部扩展字符集\
-DDEFAULT_CHARSET=utf8mb4 ##默认使用utf8mb4字符集\
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
-DWITH_BOOST=/root/mysql-8.0.21/boost/boost_1_72_0/##c++boost库
编译成功后,执行make ,make之后执行makeinstall即可完成安装。
添加启动脚本:
[root@server1 mnt]# cd /usr/local/mysql/
[root@server1 mysql]# ls
bin lib LICENSE-test README run var
docs LICENSE man README.router share
include LICENSE.router mysql-test README-test support-files
[root@server1 mysql]# cd support-files/
[root@server1 support-files]# ls
mysqld_multi.server mysql-log-rotate mysql.server
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld
- 将安装目录中的support-file中的mysql.server复制到/etc/init.d/mysqld
- 修改配置文件/etc/my.cnf:
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/data/mysql/mysql.sock
!includedir /etc/my.cnf.d
- 为mysql注册一个用户:
useradd -M -d /usr/local/mysql/ -s /sbin/nologin mysql
- 创建数据目录:
mkdir -p /data/mysql
- 对数据目录进行授权
chown mysql.mysql /data/mysql/
- 添加环境变量
[root@server1 bin]# pwd
/usr/local/mysql/bin
将命令的路径添加进环境变量。
vim ~/.bash_profile
执行
source ~/.bash_profile
使环境变量生效。
初始化
进行初始化时必须保证数据目录无数据!
以mysql身份进初始化:
mysqld --initialize --user=mysql
[root@server1 mysql]# mysqld --initialize --user=mysql
2020-08-23T07:07:47.516886Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.21) initializing of server in progress as process 30884
2020-08-23T07:07:47.544544Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-08-23T07:07:48.359732Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-08-23T07:07:50.963700Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xNa!htR!=3RV
初始化完成后启动服务mysqld:
[root@server1 mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/server1.err'.
. SUCCESS!
以管理员身份登陆mysql:
修改管理员密码
mysql> alter user root@localhost identified by 'Xng+123456';
Query OK, 0 rows affected (0.00 sec)
更改完成后退出数据库,使用管理员身份进行登陆: