#官网源码编译安装文档:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html
#系统安装条件官方文档说明:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html
#源码tar包:https://dev.mysql.com/downloads/mysql/(在选择操作系统下拉列表最后就是源码包Source Code)
Generic Linux (Architecture Independent), Compressed TAR Archive 8.0.11 75.7M
Download
(mysql-8.0.11.tar.gz) MD5: 38d5a5c1a1eeed1129fec3a999aa5efd
#Boost官网:https://www.boost.org/
首先检查是否已经安装过mysql:
[root@localhost ~]# rpm -qa | grep mysql
有的话就卸载掉以前安装的mysql:
[root@localhost ~]# rpm -e --nodeps xxx(xxx是搜索结果)
并删除所有的相关文件:
/etc/my.cnf
1> cmake
MySQL使用cmake跨平台工具预编译源码,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。安装最新版本即可。
2> make
mysql源代码是由C和C++语言编写,在Linux下使用make对源码进行编译和构建,要求必须安装make 3.75或以上版本
3> gcc
GCC是Linux下的C语言编译工具,mysql源码编译完全由C和C++编写,要求必须安装GCC4.4.6或以上版本
4> Boost https://www.boost.org/
mysql源码中用到了C++的Boost库,要求必须安装boost1.66.0或以上版本
5> bison
Linux下C/C++语法分析器
6> ncurses
字符终端处理库
1.安装依赖
[root@localhost ~]# yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
2.创建mysql用户
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql -s /bin/false mysql
3.创建安装目录和数据目录
[root@localhost ~]# mkdir -p /usr/local/mysql
[root@localhost ~]# mkdir -p /usr/local/mysql/data
4.解压相关tar包
[root@localhost opt]# md5sum mysql-8.0.11.tar.gz #使用md5sum命令来检查是否为原版
37664399c91021abe070faa700ecd0ed mysql-8.0.11.tar.gz
[root@localhost opt]# tar -zxvf mysql-8.0.11.tar.gz
[root@localhost opt]# tar -zxvf mysql-boost-8.0.11.tar.gz -C /usr/local #解压从官网下载的boost
5.配置mysql预编译参数
进入opt下的MySQL源码解压目录执行:
[root@localhost mysql-8.0.11]# 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 -DWTH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost_1_66_0
[root@localhost mysql-8.0.11]# 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 -DWTH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost_1_66_0
注意:这里为一条语句
更多预编译配置参数请参考mysql官方文档说明:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
-DCMAKE_INSTALL_PREFIX:安装路径
-DMYSQL_DATADIR:数据存放目录
-DWITH_BOOST:boost源码路径
-DSYSCONFDIR:my.cnf配置文件目录
-DEFAULT_CHARSET:数据库默认字符编码
-DDEFAULT_COLLATION:默认排序规则
-DENABLED_LOCAL_INFILE:允许从本文件导入数据
-DEXTRA_CHARSETS:安装所有字符集
6.开始编译安装
[root@localhost mysql-8.0.11]# make && make install
make 编译时间超长,完成标志为100%并且返回[root@localhost mysql-8.0.11]#
make install 安装,挺快的。完成标志为返回[root@localhost mysql-8.0.11]#
1.配置my.cnf文件
把已有的my.cnf更名为my.cnf.bak(如果有),然后新建
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server-id=1
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
##请根据实际情况添加参数
2.目录权限修改
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/data
[root@localhost ~]# chmod 755 /usr/local/mysql -R
[root@localhost ~]# chmod 755 /usr/local/mysql/data -R
1.初始化
[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data/
[root@localhost bin]# ./mysql_ssl_rsa_setup
2.启动mysql
[root@localhost bin]# ./mysqld_safe --user=mysql
3.修改账号密码
[root@localhost bin]# ./mysql -uroot -p
mysql> alter user 'root'@'localhost' identified by "123456";
mysql> show databases;
4.配置环境变量
[root@localhost bin]# vim /etc/profile
JAVA_HOME=/opt/soft/jdk1.8.0_171
PATH=/opt/soft/jdk1.8.0_171/bin:/usr/local/mysql/bin:$PATH
export JAVA_HOME PATH
[root@localhost bin]# source /etc/profile(使配置立即生效)
5.配置防火墙
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent(永久的)
[root@localhost ~]# firewall-cmd --reload
6.添加远程账号(远程workbench可以访问)(hostip拥有访问权限的IP地址,%号说明一切IP都可以连接)
mysql> create user 'Orange'@'hostip' identified by '123456';(123456密码)
Query OK, 0 rows affected (0.08 sec)
mysql> grant all privileges on *.* to 'Orange'@'hostip';
Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
7.取消8.0新特性sha2(不取消则需要通过sha2加密连接,但许多数据库管理工具没这玩意,所以会报错)
mysql> use mysql
mysql> select user, host, plugin, authentication_string from user\G;
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server-id=1
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
default_authentication_plugin=mysql_native_password #加上这句话
mysql> INSERT INTO user (Host,User,Password) VALUES("%","Orange",PASSWORD("123456")); #增加新用户