源码编译MySQL8.0.17

首先编译数据库的前提需要cmake3.15版本以上和gcc5.3.0以上

上一个博客是源码编译gcc5.3.0。
如果大家不想麻烦的再去源码编译 cmake 的话 可以直接下载cmake3 命令也是cmake3
不清楚的可以找“男人“或者百度去

依赖准备完毕 …

去官网或者国内镜像站下载MySQL8.0.17.tar.gz 包 网址我就不放上面了(因为此篇博客纯手敲)
可以直接去国内镜像站或者MySQL官网下载。
首先 我们需要创建 msyql 用户和他的所属组 然后创建
groupadd mysql useradd mysql 把 mysql用户 添加到 mysql组里 mkdir -p /usr/lcoal/mysql/
将数据库包下载到/usr/local/mysql/下解压

开始编译

yum -y install cmake3
刚编译会遇到一个问题 找不到 cc 无法编译
可以 CC= gcc
export= CC 设置环境变量CC
cmake3 . "注 << 这里还有个点 "
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql:安装路径
-DMYSQL_DATADIR=/mysql/data:数据文件存放位置
-DSYSCONFDIR=/etc:my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1:支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1:支持InnoDB引擎
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock:连接数据库socket路径
-DMYSQL_TCP_PORT=3306:端口
-DENABLED_LOCAL_INFILE=1:允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1:安装支持数据库分区
-DEXTRA_CHARSETS=all:安装所有的字符集
-DDEFAULT_CHARSET=utf8:默认字符
-DWITH_EMBEDDED_SERVER=1:嵌入式服务器
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
这一步需要 去百度上找一个boost的包下载到 /usr/local/boost/文件夹下 进行解压
这一步报错的话提示也很明显就是 -DWITH_BOOST=< directory >
就是让你创建一个boost的目录他需要下载这个文件,如果还报错的换就去百度下载这个包解压放到自己指定的目录就行了

make && make install

编译完成
在末行添加
vim /etc/security/limits.conf
mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536

mkdir -p /data/mysqldata/{3306/{data,tmp,binlog,innodb_ts,innodb_log},backup,scripts}
创建数据库目录 然后 把所有者和所属组设置成mysql
然后进入mysql 用户

配置数据库

su - mysql
ulimits -a 查一下 mysql最大文件数是不是35536

配置 my.conf 文件

[client] port = 3306 socket = /data/mysqldata/3306/mysql.sock
[mysqld] port = 3306 user = mysql socket = /data/mysqldata/3306/mysql.sock pid-file = /data/mysqldata/3306/mysql.pid basedir = /usr/local/mysql datadir = /data/mysqldata/3306/data tmpdir = /data/mysqldata/3306/tmp open_files_limit = 60000 explicit_defaults_for_timestamp server-id = 1203306 lower_case_table_names = 1 character-set-server = utf8
federated 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

log-bin = /data/mysqldata/3306/binlog/mysql-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/mysqldata/3306/mysql-error.log slow_query_log = 1 slow_query_log_file = /data/mysqldata/3306/slow_statement.log #log_queries_not_using_indexes general_log = 0 general_log_file = /data/mysqldata/3306/general_statement.log #expire-logs-days = 14 binlog_expire_logs_seconds = 1728000 relay-log = /data/mysqldata/3306/binlog/relay-bin relay-log-index = /data/mysqldata/3306/binlog/relay-bin.index

master-info-repository=TABLE relay-log-info-repository=TABLE relay-log-recovery

innodb_buffer_pool_size = 2048M transaction-isolation=REPEATABLE-READ innodb_buffer_pool_instances = 8 innodb_file_per_table = 1 innodb_data_home_dir = /data/mysqldata/3306/innodb_ts 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/mysqldata/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]>\_

初始化数据库

/usr/local/mysql/bin/mysqld --defaults-file=/data/mysqldata/3306/my.cnf --initialize --user=mysql

启动数据库

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=mysql &
现在 netstat -nultp | grep 3306 查一下是否启动 有了端口号
在error log 文件里找到 MySQL数据的密码 grep 过滤 password
然后
/usr/local/mysql/bin/mysql -uroot -p’密码’

进入数据库

完成
总结: 数据源码编译需要指定很多东西,如果有遗漏的他的报错提示会很详细,按照他的报错提示走就行 因为我做mysql源码源码编译的服务器被我一时手贱给删除了, 其中可能有一些细节没有回想起来,如果读者编译有什么困惑欢迎留言 .

发布了121 篇原创文章 · 获赞 69 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/iT__SuperMan/article/details/104997659