mysql8源码_mysql8 源码安装

系统 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. devtoolset + 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 orsource 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密码还是用旧的方式,类似下面这样

f8755156a53737f8b3ed671de57385c9.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值