iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql 8.0如何实现源码编译安装
  • 900
分享到

Mysql 8.0如何实现源码编译安装

2024-04-02 19:04:59 900人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“Mysql 8.0如何实现源码编译安装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql 8.0如何实现源码编译安装”这篇文章吧

这篇文章主要为大家展示了“Mysql 8.0如何实现源码编译安装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql 8.0如何实现源码编译安装”这篇文章吧。

一、准备工作

1. 下载安装包

路径:https://dev.mysql.com/downloads/mysql/

这里选择 mysq-8.0.16.tar.gzMysql 8.0如何实现源码编译安装

2. 清理已有版本

##查询

rpm -qa | grep mysql
rpm -qa | grep maria

##清理(如果存在的话)

yum remove mysql

##或者 

yum remove mariadb

3. 安装依赖包

(1)常规依赖

yum -y install GCc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel

(2)特殊版本的依赖

编译的时候,分别错误提示:

                        CMake 3.4.3 or higher is required.

                        GCC 5.3 or newer is required

所以需要安装Cmake和GCC的相关版本

请参考:    Http://blog.itpub.net/69915315/viewspace-2648182

二、编译安装(软件)

1.  解压安装包

tar -zxvf tar -zxvf mysql-8.0.16.tar.gz

2. cmake配置

   (1) 进入目录 mysql-8.0.16 ,建立一个目录,用于存放编译好的软件

  cd mysql-8.0.16
  mkdir xiaochong

   (2) 进入子目录xiaochong,进行编译前的配置。 主要cmake后是 . . , 执行其父目录。

   cd  xiaochong

    配置参数:

cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=system \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHive_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DCOMPILATION_COMMENT="xiaochong edition" \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DWITH_BOOST=/tmp

3. 编译

make -j 10

4 . 安装

make install

末尾如下提示,表示成功。

-- Configuring done

-- Generating done

-- Build files have been written to: /software/mysql-8.0.16/xiaochong

--------------------------------------------------------------------------------------------------

错误1  c++: error: unrecognized command line option ‘-std=c++14’

解决方式: 添加: -DCMAKE_CXX_COMPILER=/usr/bin/g++

三、创建数据库

1、创建用户

groupadd mysql
useradd -g mysql mysql

 2. 创建相关目录

mkdir -p /data/mysql/{3306,3307}/{data,log,tmp,innodb,innodb_log}

这里是两个实例的目录,分别是3306和3307.

创建后,目录结构如下:

[root@mysql80 /]# cd data

[mysql@mysql80 data]$ tree  .

.

└── mysql

├── 3306

│ ├── data

│ ├── innodb

│ ├── innodb_log

│ ├── log

│ └── tmp

└── 3307

├── data

├── innodb

├── innodb_log

├── log

└── tmp

3. 修改目录权限

chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /usr/local/mysql/

4. 添加环境变量

 echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
 source /etc/profile

5. 添加配置文件

(1)3306

vim /data/mysql/3306/my3306.cnf

内容如下:

[client]
port=3306
Socket=/data/mysql/3306/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/data/mysql/3306/mysql.sock
pid-file=/data/mysql/3306/mysql.pid
basedir=/usr/local/mysql
datadir=/data/mysql/3306/data
tmpdir=/data/mysql/3306/tmp
open_files_limit=60000
#explicit_defaults_for_timestamp
server-id=3306
lower_case_table_names=1
character-set-server=utf8
#federated
#sql_mode=STRICT_TRANS_TABLES
max_connections=1000
max_connect_errors=100000
interactive_timeout=86400
wait_timeout=86400
sync_binlog=0
back_log=100
default-storage-engine=InnoDB
log_slave_updates=1
#*********** Logs related settings ***********
log-bin=/data/mysql/3306/log/mysql3306-bin
binlog_fORMat=mixed
binlog_cache_size=32m
max_binlog_cache_size=64m
max_binlog_size=512m
long_query_time=1
log_output=FILE
log-error=/data/mysql/3306/log/mysql-error.log
slow_query_log=1
slow_query_log_file=/data/mysql/3306/log/slow_statement.log
#log_queries_not_using_indexes
general_log=0
general_log_file=/data/mysql/3306/log/general_statement.log
#expire-logs-days = 14
binlog_expire_logs_seconds=1728000
relay-log=/data/mysql/3306/log/relay-bin
relay-log-index=/data/mysql/3306/log/relay-bin.index
#****** MySQL Replication New Feature*********
master-info-repository=TABLE
relay-log-info-repository=TABLE
#relay-log-recovery
#*********** INNODB Specific options ***********
innodb_buffer_pool_size=2048M
transaction-isolation=REPEATABLE-READ
innodb_buffer_pool_instances=8
innodb_file_per_table=1
innodb_data_home_dir=/data/mysql/3306/innodb
innodb_data_file_path=ibdata1:2048M:autoextend
innodb_thread_concurrency=8
innodb_log_buffer_size=16M
innodb_log_file_size=128M
innodb_log_files_in_group=3
innodb_log_group_home_dir=/data/mysql/3306/innodb_log
innodb_flush_log_at_trx_commit=2
innodb_max_dirty_pages_pct=70
innodb_flush_method=O_DIRECT
[mysql]
no-auto-rehash
default-character-set=gbk
prompt = (\u@\h) [\d]>\_

(1)3307

vim /data/mysql/3307/my3307.cnf

内容如下: 

[client]
port=3307
socket=/data/mysql/3307/mysql.sock
[mysqld]
port=3307
user=mysql
socket=/data/mysql/3307/mysql.sock
pid-file=/data/mysql/3307/mysql.pid
basedir=/usr/local/mysql
datadir=/data/mysql/3307/data
tmpdir=/data/mysql/3307/tmp
open_files_limit=60000
#explicit_defaults_for_timestamp
server-id=3307
lower_case_table_names=1
character-set-server=utf8
#federated
#sql_mode=STRICT_TRANS_TABLES
max_connections=1000
max_connect_errors=100000
interactive_timeout=86400
wait_timeout=86400
sync_binlog=0
back_log=100
default-storage-engine=InnoDB
log_slave_updates=1
#*********** Logs related settings ***********
log-bin=/data/mysql/3307/log/mysql3306-bin
binlog_format=mixed
binlog_cache_size=32m
max_binlog_cache_size=64m
max_binlog_size=512m
long_query_time=1
log_output=FILE
log-error=/data/mysql/3307/log/mysql-error.log
slow_query_log=1
slow_query_log_file=/data/mysql/3307/log/slow_statement.log
#log_queries_not_using_indexes
general_log=0
general_log_file=/data/mysql/3307/log/general_statement.log
#expire-logs-days = 14
binlog_expire_logs_seconds=1728000
relay-log=/data/mysql/3307/log/relay-bin
relay-log-index=/data/mysql/3307/log/relay-bin.index
#****** MySQL Replication New Feature*********
master-info-repository=TABLE
relay-log-info-repository=TABLE
#relay-log-recovery
#*********** INNODB Specific options ***********
innodb_buffer_pool_size=2048M
transaction-isolation=REPEATABLE-READ
innodb_buffer_pool_instances=8
innodb_file_per_table=1
innodb_data_home_dir=/data/mysql/3307/innodb
innodb_data_file_path=ibdata1:2048M:autoextend
innodb_thread_concurrency=8
innodb_log_buffer_size=16M
innodb_log_file_size=128M
innodb_log_files_in_group=3
innodb_log_group_home_dir=/data/mysql/3307/innodb_log
innodb_flush_log_at_trx_commit=2
innodb_max_dirty_pages_pct=70
innodb_flush_method=O_DIRECT
[mysql]
no-auto-rehash
default-character-set=gbk
prompt = (\u@\h) [\d]>\_

6、初始化数据库

(1) 3306

mysqld --defaults-file=/data/mysql/3306/my3306.cnf --initialize --user=mysql

(2) 3307

mysqld --defaults-file=/data/mysql/3307/my3307.cnf --initialize --user=mysql

错误如下:

[mysql@mysql80 ~]$ mysqld --defaults-file=/data/mysql/3306/my.cnf --initialize --user=mysql

mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by mysqld)

mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by mysqld)

mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by mysqld)

mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by mysqld)

解析办法:

  原因: 由于我们之前升级了gcc,也就是gcc-5.3.0.  但目录 /lib64/ 下的库文件链接的是 libstdc++.so.6 依然软链接是低版本 libstdc++.so.6.0.19

[root@mysql80 /]# cd /lib64/

[root@mysql80 lib64]# ls -l | grep libstdc++.so.6

lrwxrwxrwx. 1 root root 19 Jun 19 14:36 libstdc++.so.6 -> libstdc++.so.6.0.19

-rwxr-xr-x. 1 root root 991616 Apr 24 22:24 libstdc++.so.6.0.19

进入到新安装的gcc-5.3.0的目录,进入lib64,查看libstdc++.so.6,软链接的是  libstdc++.so.6.0.21

[root@mysql80 gcc-5.3.0]# cd lib64/

[root@mysql80 lib64]# ls -l | grep libstdc++.so.6

lrwxrwxrwx. 1 root root 19 Jun 25 15:54 libstdc++.so -> libstdc++.so.6.0.21

lrwxrwxrwx. 1 root root 19 Jun 25 15:54 libstdc++.so.6 -> libstdc++.so.6.0.21

-rwxr-xr-x. 1 root root 11089328 Jun 25 15:54 libstdc++.so.6.0.21

处理: 删除原来的软链接,建立新的软链接:

[root@mysql80 lib64]# rm -rf libstdc++.so.6

[root@mysql80 lib64]# ln -s /usr/local/gcc-5.3.0/lib64/libstdc++.so.6 libstdc++.so.6

[root@mysql80 lib64]# ls -l | grep libstdc++.so.6

lrwxrwxrwx. 1 root root 41 Jun 26 14:48 libstdc++.so.6 -> /usr/local/gcc-5.3.0/lib64/libstdc++.so.6

7.启动服务

(1) 3306

 /mysqld_safe --defaults-file=/data/mysql/3306/my.cnf --user=mysql &

 (2)3307

 /mysqld_safe --defaults-file=/data/mysql/3307/my.cnf --user=mysql &

8.登录数据库 

 这里以3306实例为例,3307步骤相同,只需要注意端口号即可,即大写的 -P 

(1)查找root@localhost的初始密码,

查看当前错误日志

more /data/mysql/3306/log/mysql-error.log

找到如下行,标红的即是密码:

[MY-010454] [Server] A temporary passWord is generated for root@localhost: ?/ihz.ew8SIy

mysql -uroot -p'?/ihz.ew8SIy' -P3306 -S /data/mysql/3306/mysql.sock

  (2)登录

mysql -uroot -p'?/ihz.ew8SIy'  -P3306 -S /data/mysql/3306/mysql.sock

   (3)修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH sha256_password BY 'Yxc@3306' PASSWORD EXPIRE INTERVAL 360 DAY;

    (4) 查询数据库

ysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.00 sec)

9. 校验后台进程

Mysql 8.0如何实现源码编译安装

以上是“Mysql 8.0如何实现源码编译安装”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql 8.0如何实现源码编译安装

本文链接: https://www.lsjlt.com/news/62704.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-14
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-14
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-14
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-14
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-14
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-14
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-14
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-14
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作