博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql8 源码安装
阅读量:5015 次
发布时间:2019-06-12

本文共 5220 字,大约阅读时间需要 17 分钟。

系统 centos-7.6 

下载的源码包 mysql-8.0.16.tar.gz

编译安装mysql-8.0.16 遇到的问题和解决方案:

一:CMake 3.4.3 or higher is required. You are running version 2.8.12.2
要求安装cmake3这个包
需要安装扩展包,cmake3 在扩展库里面
yum install epel-release -y
yum install cmake3 -y
二:Please do not build in-source. Out-of source builds are highly
1.在mysql源码根目录下新建build:mkdir -p build
2.切换build目录:cd build/
3.将cmake3. 换成 cmake3.. 执行编译命令即可,不再报错
三:GCC 5.3 or newer is required (-dumpversion says 4.8.5)
升级GCC 要求 >5.3

两种解决方法:

1.  + scl (推荐用这种方式) 

yum install centos-release-scl -y

yum install devtoolset-7 -y
scl enable devtoolset-7 bash
gcc --version

# scl enable devtoolset-7 bash #这样是创建了一个类似子shell的,在脚本里面不介意这样用,会有问题,如果在终端安装可以

# scl enable devtoolset-7 "cmd" #运行命令

脚本中推荐使用:

#export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc #脚本里可以这样定义GCC 的环境变量

其他定义,因为只需求对GCC 的版本,下面不用配置也可以

# export CPP=/opt/rh/devtoolset-7/root/usr/bin/cpp  

# export CXX=/opt/rh/devtoolset-7/root/usr/bin/c++

或者

#source /opt/rh/devtoolset-7/enable or source scl_source enable devtoolset-7

在centos的devtoolset库中 最新的为 devtoolset-7,所以我们以后可以自己改数字安装最新的版本

scl enable devtoolset-7 bash

如果使用的是zsh则使用

scl enable devtoolset-7 zsh

参考文档

2.源码升级(不推荐用这种方式)

下载好5.5
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
cd gcc-5.5.0
#下载mpfr、gmp、mpc、isl等依赖包
./contrib/download_prerequisites
#开始编译gcc
mkdir build && cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j && make install

参考文章

https://www.jianshu.com/p/36f5d3524240

注意加下面的参数

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/
这样编译的时候不会因为找不到BOOST包而报错
解决完上面的问题,就可以安装了

mkdir -p build

cd mysql-8.0.16/build 

cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DWITH_DEBUG=OFF \
-DENABLED_PROFILING=ON \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=ON \
-DWITH_FEDERATED_STORAGE_ENGINE=ON \
-DWITH_ARCHIVE_STORAGE_ENGINE=ON \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
-DWITH_UNIT_TESTS=OFF \
-DENABLE_DTRACE=OFF \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src \
-DMYSQL_DATADIR=/data/mysql

make -j N #根据系统性能,修改N 是使用的CPU核数

make install

/usr/local/mysql/bin/mysqld \

--initialize-insecure=off
--user=mysql \
--basedir=/usr/local/mysql/ \
--datadir=/data/mysql/

修改配置文件my.cnf

参考文档

https://dev.mysql.com/doc/refman/8.0/en/server-configuration.html 

https://blog.csdn.net/vkingnew/article/details/81712250

https://blog.51cto.com/wangwei007/2296180

vim /etc/my.cnf

[client]

port = 3306
host = localhost
socket = /data/mysql1/mysql.sock
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
[mysqld1]
character-set-server=utf8mb4 #utf8mb4默认编码,提示让修改成这个,优化了性能,具体没有测试
bind-address = 0.0.0.0
port = 3306
server-id = 1
innodb_buffer_pool_size = 3G
#default_authentication_plugin=mysql_native_password

#修改使用mysql_native_password插件认证

#MySQL 8.0改了默认加密方式为caching_sha2_password

#包括你刚初始化的root用户也是这个认证加密方式,这样的结果是让你除非用新的协议驱动,例如必须用8.0自带的mysql客户端才行

#不然就连接不上数据库.这样就必然造成不兼容的情况,幸好,是可以改回旧的方式的.

#在mysql5.7环境里,虽然可以设置default_authentication_plugin来改变认证加密方式,但是一般人不会去设置.

但是,这个参数只对新授权的用户生效,旧的root密码还是用旧的方式,类似下面这样

 

max_connections = 3000

max_connect_errors = 100
connect-timeout = 5
open_files_limit = 65535
back_log = 512 #MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中
max_allowed_packet = 64M
#slow-query-log = 1
#slow-query-log-file = /data/mysql1/slow.log
#long-query-time = 1
#log_slow_admin_statements=1 #参数设置为1,而这个参数只在5.6.11后支持
#min_examined_row_limit=N #表示只有返回条数大于N才记录到慢查询
#log_queries_not_using_indexes #记录没有索引的SQL
#log_throttle_queries_not_using_indexes=N #为N后表示1分钟内该SQL最多记录N条
#log_slow_slave_statements #在从库开启慢查询语句
skip-host-cache
skip-name-resolve
#log-bin = mysql-bin
#log-bin-index = mysql-bin.index
#binlog_expire_logs_seconds=25200 #expire-logs-days参数已经没有了,取而代之的是binlog_expire_logs_seconds,单位是秒
log_timestamps=SYSTEM
basedir = /usr/local/mysql
datadir = /data/mysql1
socket = /data/mysql1/mysql.sock
log-error = /data/mysql1/mysql.err
pid-file = /data/mysql1/mysql.pid
sql-mode="NO_ENGINE_SUBSTITUTION" #NO_AUTO_CREATE_USER没有了
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
#query_cache彻底消失了,在mysql5.7还需要手动设置为关闭,现在可以不用理会了,所以相应的两个参数就可以注释掉了
#query_cache_size=0
#query_cache_type=0
#innodb_undo_logs #不能再设置了
在mysql8.0里,undo独立表空间是默认开启的,而且值为2,也就是默认两个,但是不能设innodb_undo_logs这个参数来指定回滚段大少,回滚段默认就是128
echo 'export PATH="$PATH:/usr/local/mysql/bin"' >> /etc/profile
source /etc/profile
mysqld_multi start 1
安装完成
mysql8.0创建用户授予权限报错解决方法
CREATE USER ‘w’@’localhost’ IDENTIFIED BY ‘000000’;
GRANT ALL PRIVILEGES ON . TO ‘w’@’localhost’ IDENTIFIED BY ‘000000’;
这种语法在8.0 会报错
可见,在授权的语句中需要去掉
IDENTIFIED BY ‘password’
在mysql8.0创建用户和授权和之前不太一样.其实也不能说不一样,而是说更严格,需要先创建用户和设置密码,然后才能授权.
正确的写法是
创建用户
mysql> create user 'news'@'192.168.1.%' identified by '123news';
Query OK, 0 rows affected (0.09 sec)

删除用户

mysql> drop  user 'news'@'192.168.1.%' ;

授权用户
mysql> grant all privileges on news.* to 'news'@'192.168.1.%';
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
单独授予某种权限的写法:
GRANT SELECT ON oilsystem.input TO ‘u5’@’localhost’
刷新权限并查看权限的写法:
Use mysql;FLUSH PRIVILEGES;
另外,收回某种权限的写法是:
REVOKE select ON . FROM ‘u1’@’localhost’;
MySQL Group Replication-MGR 这个参考文档
https://blog.51cto.com/arthur376/2114026

 

转载于:https://www.cnblogs.com/centos-python/articles/10860421.html

你可能感兴趣的文章
python程序设计——面向对象程序设计:类
查看>>
Labview学习笔记(二)
查看>>
在MySQL中使用explain查询SQL的执行计划
查看>>
域名解析中A记录、CNAME、MX记录、NS记录的区别和联系
查看>>
VMware Workstation 14 PRO 下安装Ubuntu 16.04 LTS教程
查看>>
TK窗体框架的应用
查看>>
IIS 7.5 去掉index.php 西数服务器
查看>>
【iOS】no identity found Command /usr/bin/codesign failed with exit code 1
查看>>
StringBuilder 详解 (String系列之2)
查看>>
hive partition 分区使用
查看>>
Hive 数据类型
查看>>
如何使文字TextView居中
查看>>
努力打拼
查看>>
Unity3D项目开发一点经验
查看>>
C#--判断当前是否是移动设备和设备的型号
查看>>
ie8此加载项无法恢复&网站还原错误问题解决=lr成功打开ie成功录制脚
查看>>
异常过滤程序 EXCEPTION_EXECUTE_HANDLER, EXCEPTION_CONTINUE_EXECUTION,EXCEPTION_CONTINUE_SEARCH...
查看>>
不再有神的概念,将所有存在称之为文明,这很有意思
查看>>
3d旋转爱心
查看>>
GDB调试汇编堆栈过程分析
查看>>