当前位置: 首页 > news >正文

MySQL集群技术1——编译部署mysql

MySQL在服务器中的部署办法

一般而言,企业中的服务器操作系统都为linux,对于MySQL的安装则通常采用源码编译的方式来进行。

MySQL 是一个广泛使用的开源关系型数据库管理系统。如果您希望从源代码编译和安装 MySQL,可以遵循以下步骤。请注意,这里假设您正在使用类 Unix 系统(如 Linux 或 macOS),并且您具有 root 或 sudo 访问权限。

准备工作

  1. 更新系统包列表

    sudo apt update
    
  2. 安装必要的依赖包

    sudo apt install build-essential cmake libncurses5-dev libssl-dev libaio1 libaio-dev libreadline-dev bison flex libmysqlclient-dev libncursesw5-dev liblz4-tool
    
  3. 创建安装目录

    mkdir -p /usr/local/mysql
    

下载源代码

  1. 访问 MySQL 官方网站:前往 MySQL 的官方下载页面获取最新版本的源代码包。

  2. 下载源代码包:使用 wget 或 curl 下载源代码包。

    wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
    
  3. 解压缩源代码包

    tar xzf mysql-8.0.33.tar.gz
    

配置和编译

  1. 进入源代码目录

    cd mysql-8.0.33
    
  2. 创建构建目录

    mkdir build
    cd build
    
  3. 配置编译选项

    cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DWITH_ZLIB=bundled \-DWITH_LZ4=bundled \-DWITH_ZSTD=bundled \-DWITH_PERFD_SCHEMA=1 \-DWITH_INNOBASE_SUPPORT_XA=1 \-DWITH_EXTRA_CHARSETS=all \-DENABLED_LOCAL_INFILE=1 \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_unicode_ci \-DWITH_SSL=yes \-DWITH_DEBUG=0 \-DWITH_BOOST=/usr \-DMYSQL_DATADIR=/usr/local/mysql/data \-DINSTALL_MANDIR=/usr/local/mysql/share/man \-DINSTALL_DOCDIR=/usr/local/mysql/doc \-DINSTALL_INCLUDEDIR=/usr/local/mysql/include \-DINSTALL_INFODIR=/usr/local/mysql/share/info \-DINSTALL_MYSQLSHAREDIR=/usr/local/mysql/share/mysql \-DINSTALL_MYSQLTESTDIR=/usr/local/mysql/mysql-test \-DINSTALL_PLUGINDIR=/usr/local/mysql/lib/plugin \-DINSTALL_SBINDIR=/usr/local/mysql/bin \-DINSTALL_SCRIPTDIR=/usr/local/mysql/bin \-DINSTALL_SHAREDIR=/usr/local/mysql/share \-DINSTALL_SQLBENCHDIR=/usr/local/mysql/sql-bench \-DINSTALL_SUPPORTFILESDIR=/usr/local/mysql/share \-DINSTALL_LIBDIR=/usr/local/mysql/lib \-DINSTALL_MYSQLCONFDIR=/etc/mysql \..
    
  4. 编译源代码

    make -j$(nproc) #核心对应进程数目,有几个核心就跑几个进程
    
  5. 安装 MySQL

     make install
    

初始化 MySQL 数据库

1.创建数据目录

   useradd -s /sbin/nologin -M mysqlmkdir -p /usr/local/mysql/datachown -R $(whoami):$(whoami) /usr/local/mysql/data#chown mysql.mysql /data/mysql/   #一般而言是这样

$whoani=>mysql

2.修改环境变量

[root@node10 ~]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/mysql/bin
[root@node10 ~]# source ~/.bash_profile

3.修改配置文件

[root@node10 my.cnf.d]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql #指定数据目录
socket=/data/mysql/mysql.sock #指定套接字
symbolic-links=0 #数据只能存放到数据目录中,禁止链接到数据目录

4.初始化数据库

 cd /usr/local/mysql/bin
mysqld --initialize --user=mysql/etc/init.d/mysqld startchkconfig mysqld on

5.数据库安全初始化

mysql_secure_installation

Securing the MySQL server deployment.
Enter password for user root: #输入当前密码
在mysql初始化阶段会生成一个临时密码,这个临时密码就是安全初始化的时候使用的当前密码
The existing password for the user account root has expired. Please set a new
password.
New password: #输入新密码
Re-enter new password: #重复密码
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: no #是否启用密码插件
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : no#是否要重置密码
… skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No): y
Dropping test database…
Success.
Removing privileges on test database…
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

6.创建启动脚本

[root@node10 ~]# dnf install initscripts-10.11.6-1.el9.x86_64 -y
[root@node10 ~]# cd /usr/local/mysql/support-files/
[root@node10 support-files]# cp mysql.server /etc/init.d/mysqld

7.登录 MySQL

 ./mysql -u root -p

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • 【C++ 面试 - 内存管理】每日 3 题(三)
  • 京存分布式赋能EDA应用
  • Aviator的介绍与使用以及基本原理
  • 如何选择适合医疗器械行业的ERP软件?盘谷医疗 符合验收
  • python爬虫,使用pyppeteer异步,爬取,获得指定标签内容
  • 如何在没有密码的情况下从 iPad 中删除 MDM?100% 工作
  • 【系统架构设计】测试评审方法
  • 打卡学习Python爬虫第五天|Xpath解析的使用
  • 书生大模型实战营第三期基础岛第三课——浦语提示词工程实践
  • 城乡燃气安全监管平台 打造城市安全防护网
  • JavaJSON处理工具类JSONUtils
  • python-字符串排序(赛氪OJ)
  • 视频转音频mp3软件有哪些?分享好用的转换工具
  • docker具体操作
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【Linux系统编程】快速查找errno错误码信息
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • AWS实战 - 利用IAM对S3做访问控制
  • CAP 一致性协议及应用解析
  • centos安装java运行环境jdk+tomcat
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • MQ框架的比较
  • OSS Web直传 (文件图片)
  • php ci框架整合银盛支付
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spark RDD学习: aggregate函数
  • ubuntu 下nginx安装 并支持https协议
  • 规范化安全开发 KOA 手脚架
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 手机端车牌号码键盘的vue组件
  • 双管齐下,VMware的容器新战略
  • 微信开源mars源码分析1—上层samples分析
  • 微信小程序--------语音识别(前端自己也能玩)
  • 无服务器化是企业 IT 架构的未来吗?
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 在Mac OS X上安装 Ruby运行环境
  • 正则表达式
  • Nginx实现动静分离
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # .NET Framework中使用命名管道进行进程间通信
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (9)目标检测_SSD的原理
  • (function(){})()的分步解析
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)计算机毕业设计ssm电影分享网站
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (已解决)什么是vue导航守卫