Loading... ## And 1.引文 由于上一篇`Mysql相关`文章出现的mysql安装和使用的问题,为了不浪费太多的时间和文章阅读视界,就没有将编译安装mysql写进去,这里就另起一篇编译安装步骤的。 ## And 2.正文 我这边准备了一台刚刚最小化安装的centos,只安装了net-tools方便使用,mysql都是没安装的,当然如果你mysql坏了也建议将mysql相关文件都清理一下再来操作。 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2583262382.png) ### And 2.1.安装环境 #### And 2.1.1.安装开发者工具组件 ```shell yum group list ## 列出组件列表 yum group install "开发工具" 或者用:yum group install "Development Tools" ## 安装开发者工具组件 如果不想手动选择安装项可以直接在最后面加参数“-y”来默认选yes ``` ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2899410049.png) 等待开发工具组件安装完成 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/427526874.png) #### And 2.1.2.安装必要依赖包 ```shell yum -y install gcc gcc-c++ cmake ncurses-devel autoconf bison perl perl-devel openssl openssl-devel ``` 等待安装完成 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/1596968512.png) ### And 2.2.开始编译安装 #### And 2.2.1.创建Mysql目录及用户组与用户 创建目录 ```shell mkdir /usr/local/mysql mkdir /usr/local/mysql/data ``` 创建用户组和用户 ```shell groupadd mysql ## 创建用户组 useradd -r -g mysql mysql ## 创建用户,-r定为系统账号,-g用为指定用户组;用户组为mysql,用户名为mysql,没有密码 ``` ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3677354943.png) #### And 2.2.2.下载解压boost包 boost库可以来提高编译效率 先在/usr/local创建文件夹 ```shell mkdir -p /usr/local/boost ## -p用于可递进创建,防止boost之前的文件夹不存在时无法创建 cd /usr/local/boost wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz ## 下载boost包,如果失效可以去其他源找找 tar -zxvf boost_1_77_0.tar.gz ## 解压boost包,-z操作gzip格式文件,-x解压操作,-v显示过程,-f显示名称 ``` #### And 2.2.3.下载安装Mysql源码包 我们到mysql官网:[MySQL](https://www.mysql.com/) ![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/336056190.png) 下拉找到社区版进入 ![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2248890523.png) ![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/9775966.png) ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3415969306.png) ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/1290310200.png) 进入下载页面拉到后面有一个直接下载链接,右击复制 ![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2767062829.png) 然后到你的一个下载路径里 `~注意!! 这里避个坑:我们虚拟机配置就那样,不配装8.0的mysql,这里我就慢慢磨了好久,上面和下方有些图片都可以看到有好些带mysql8,因为图片基本一样就没有修改了,重要的命令啥的都已经修正~` ```shell cd /下载/mysql/ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42.tar.gz ``` ![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2932620002.png) 下载完后解压一下 ```shell tar -zxvf mysql-5.7.42.tar.gz ``` ![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2855384109.png) 再使用mv将文件夹移动到其他保存的路径上,随之进入这个文件夹里 ```shell mv /下载/mysql/mysql-5.7.42 /usr/local/mysql cd /usr/local/mysql/mysql-5.7.42/ ``` 生成`Makefile` ```shell ## 这里注意一下 ## -DWITH_BOOST=[你上面boost包解压后的路径] 这里使用1.15版本的boost即可,其他版本可能会太低或者太高不支持 ## -DFORCE_INSOURCE_BUILD=1 这里是强制执行,可以先去掉这行,如果有提示需要再添加 ## -DWITH_SYSTEMD=1 这条是来控制是否安装mysqld_safe ### 其他详细可以用 sudo cmake .. -LH 查看 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=/usr/local/boost ## -DWITH_SYSTEMD=1 \ ## -DFORCE_INSOURCE_BUILD=1 ### ------------------------------------------- ### ## CMAKE参数说明: 注意: \后面不能有空格 ## -DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装路径 ## -DMYSQL_DATADIR=/usr/local/mysql/data //数据文件存放位置 ## -DSYSCONFDIR=/etc //my.cnf路径 ## -DWITH_MYISAM_STORAGE_ENGINE=1 //支持MyIASM引擎 ## -DWITH_INNOBASE_STORAGE_ENGINE=1 //支持InnoDB引擎 ## -DWITH_MEMORY_STORAGE_ENGINE=1 //支持Memory引擎 ## -DWITH_READLINE=1 //快捷键功能(我没用过) ## -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock //连接数据库socket路径 ## -DMYSQL_TCP_PORT=3306 //端口 ## -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据 ## -DWITH_PARTITION_STORAGE_ENGINE=1 //安装支持数据库分区 ## -DEXTRA_CHARSETS=all //安装所有的字符集 ## -DDEFAULT_CHARSET=utf8 //默认字符 ## -DDEFAULT_COLLATION=utf8_general_ci //设置默认校对规则 ### ------------------------------------------- ### ``` 在这里生成步骤上,可能会有缺少部分环境,可以根据提示内容配置一下,直到配置没有问题: ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2934444842.png) 执行完毕就可以继续使用`make`编译安装 ```shell ## ############################################# ## ## !!注意,编译过程将是漫长的,耐心等待即可!! ## ## ############################################# ## make ## 编译 make test ## 测试 make install ## 安装 ``` ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2325893280.png) ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/692245842.png) 编译完成测试全都通过,然后就直接`make install`来安装 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3561236792.png) 来检查一下mysql的文件 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3596848569.png) 给里面添加一个data目录:mkdir data 再移动一下源文件: ~~~shell mv ./mysql-5.7.42 /usr/local/mysql ~~~ 这里再给文件权限分配一下 ```shell chown -R mysql:mysql /usr/local/mysql chmod -R 755 /usr/local/mysql ## 上面已经提前创建好了用户组和用户,这里直接给权限就行 cd /usr/local/mysql/ chown -R mysql:mysql . chown -R mysql:mysql /usr/local/mysql/data ## 进入mysql目录内再分配一下 ``` 这里我们先进入到mysql的bin目录 ~~~shell cd /usr/local/mysql/bin/ ~~~ 然后保证$file/mysql/data目录内容是空的,使用下面这条命令 ```shell ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql ``` ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3468668618.png) cd /usr/local/mysql/ chown -R mysql:mysql . chown -R mysql:mysql /usr/local/mysql/data 进入mysql目录内再分配一下 #### And 2.2.4.将Mysql添加到系统服务 然后再创建一个`my-default.cnf`文件,有可能你自带是有的,我这里是没有 ````shell vi support-files/my-default.cnf ## 内容如下,如果有不同路径就改改 [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data pid-file = /usr/local/mysql/mysql.pid log_error = /usr/local/mysql/mysql-error.log slow_query_log = 1 long_query_time = 1 skip-external-locking key_buffer_size = 32M max_allowed_packet = 1024M table_open_cache = 128 sort_buffer_size = 768K net_buffer_length = 8K read_buffer_size = 768K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M thread_cache_size = 16 query_cache_size = 16M tmp_table_size = 32M performance_schema_max_table_instances = 1000 explicit_defaults_for_timestamp = true #skip-networking max_connections = 500 max_connect_errors = 100 open_files_limit = 65535 log_bin=mysql-bin binlog_format=mixed server_id = 232 expire_logs_days = 10 early-plugin-load = "" default_storage_engine = InnoDB innodb_file_per_table = 1 innodb_buffer_pool_size = 128M innodb_log_file_size = 32M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 32M sort_buffer_size = 768K read_buffer = 2M write_buffer = 2M ```` 使用cp命令,拷贝替换到etc下的my.cnf ```shell cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf ``` 检查一下是否成功 ![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3713097943.png) #### And 2.2.5.配置Mysql 切换到bin目录 ```shell cd /usr/local/mysql/bin/ ``` 执行mysql ~~~shell ./mysql -u root -p ## 登录 set password for root@localhost = password('yourpass'); ## 修改密码 ~~~ #### And 2.2.6.配置mysql命令可执行和脚本启动 ```shell #当前修改环境变量更稳定可靠的方式应该是在**/etc/profile.d文件夹内添加新的命令号,耦合性低,便于管理。例如将mysql添加进入环境变量,在该文件夹内新增mysql.sh**文件 export MYSQL_HOME=/usr/local/mysql export PATH=$PATH:$MYSQL_HOME/bin cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql source /etc/profile service mysql start ``` 最后修改:2024 年 08 月 30 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 觉得文章有用,可以赞赏请我喝瓶冰露