MySql源码安装

文章目录

主要分为三部:生成、编译 编译安装

编译之前的环境配置
bash 复制代码
#安装依赖包
[root@db01 ~]#  yum install -y ncurses-devel libaio-devel  cmake gcc wget
#创建数据库使用用户
[root@db01 ~]#  useradd -r -s /sbin/nologin mysql
#下载源数据
[root@db01 ~]#  wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.38.tar.gz
#解压源数据包
[root@db01 ~]#  tar xf mysql-5.6.38.tar.gz
使用cmake生产makefile,用于编译安装

此过程时间会比较长,一般在十几分钟左右

bash 复制代码
[root@db01 mysql-5.6.38]#  cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.6.38 \
-DMYSQL_DATADIR=/app/mysql-5.6.38/data \
-DMYSQL_UNIX_ADDR=/app/mysql-5.6.38/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

# -DCMAKE_INSTALL_PREFIX 指定数据的源目录  会自动创建
# -DMYSQL_DATADIR 指定数据库的数字写到哪里
# -DDEFAULT_CHARSET 指定使用的语言格式

PS:结束之后在mysql-5.6.38查看会有makefile文件
使用make进行编译,make install进行安装
bash 复制代码
[root@db01 mysql-5.6.38]# make && make install
注意看提示信息,不可以有error出现,到这里就安装好了

#创建软连接方便后续的升级管理
[root@db01 mysql-5.6.38]# ln -s /app/mysql-5.6.38/ /app/mysql
[root@db01 app]# ls
mysql  mysql-5.6.38
#创建mysql启动时需求的套接字文件 存放pid
[root@db01 app]# mkdir /app/mysql-5.6.38/tmp
mysql初始化

初始化使用工具,在/app/mysql-5.6.38/scripts/下

bash 复制代码
#进行初始化
[root@db01 app]# cd mysql-5.6.38/scripts/
[root@db01 scripts]# ls
mysql_install_db
#以下初始化命令 初始化成果之后一定要出现2个OK
[root@db01 scripts]# ./mysql_install_db --basedir=/app/mysql/ --datadir=/app/mysql/data --user=mysql
#给文件归属权限到mysql
chown -R mysql.mysql /app/
#--basedir= 指定源目录  这里指像已经做软连接的目录
#--datadir= 指定数据存放位置
#--user= 指定数据库使用用户
启动mysql****
bash 复制代码
#进入mysql的目录,找到support-files下,是mysql初始化自动生成的管理脚本
[root@db01 mysql-5.6.38]# ls
bin      data  include  man     mysql-test  scripts  sql-bench      tmp
COPYING  docs  lib      my.cnf  README      share    support-files
#复制启动脚本使用
[root@db01 mysql-5.6.38]# cp support-files/mysql.server /etc/init.d/mysqld
#/etc/init.d/ 是系统自动启动的脚本,复制过去 mysqld是可以自定义的服务名字
#给脚本执行权限
[root@db01 mysql-5.6.38]# chmod 700 /etc/init.d/mysqld
#复制mysql启动时所需要的配置文件my.cnf 
[root@db01 mysql-5.6.38]# cp support-files/my-default.cnf /etc/my.cnf
y 覆盖

#启动mysql
[root@db01 mysql-5.6.38]# /etc/init.d/mysqld start
my.cnf 和 mysqld文件不需要进行修改,这些文件的配置内容是依据我们初始化的数据自动已经生成了,复制了就可以继续使用
设置mysql的环境变量
bash 复制代码
[root@db01 ~]# vim /etc/profile
#添加以下的内容
export PATH=/app/mysql/bin:$PATH
#加载环境变量
[root@db01 ~]# source /etc/profile
#检查环境变量是否生效
[root@db01 ~]# echo $PATH
/app/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
登入mysql,设置密码

mysql是C/S架构的,有服务端和客户端,可以在不同的主机上,也可以在同一台主机上

bash 复制代码
#使用客户端进行连接mysql,完成数据的增删改查
语法: mysql -uroot -p
[root@db01 ~]# mysql -uroot -p
Enter password: #默认是空密码的,直接回车就可以进入
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.38 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> Ctrl-C -- exit!
Aborted
mysql安全配置

使用mysqladmin进行修改配置密码

bash 复制代码
mysqladmin -urrot -p password
#设置新密码
[root@db01 ~]# mysqladmin -uroot -p password
Enter password:   输入默认密码 直接回车
New password:     输入新密码
Confirm new password:  再次输入新密码
[root@db01 ~]# mysql -uroot -p
Enter password:  输入设置的新密码进入
相关推荐
·云扬·39 分钟前
MySQL Redo Log落盘机制深度解析
数据库·mysql
用户982863025681 小时前
pg内核实现细节
数据库
码界筑梦坊1 小时前
330-基于Python的社交媒体舆情监控系统
python·mysql·信息可视化·数据分析·django·毕业设计·echarts
飞升不如收破烂~1 小时前
Redis 分布式锁+接口幂等性使用+当下流行的限流方案「落地实操」+用户连续点击两下按钮的解决方案自用总结
数据库·redis·分布式
workflower1 小时前
业务需求-假设场景
java·数据库·测试用例·集成测试·需求分析·模块测试·软件需求
亓才孓1 小时前
[JDBC]基于三层架构和MVC架构的JDBCTools
数据库
IT邦德1 小时前
RPM包快速安装Oracle26ai
数据库·oracle
Dovis(誓平步青云)2 小时前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
mr_LuoWei20092 小时前
python工具:python代码知识库笔记
数据库·python
这周也會开心2 小时前
Redis数据类型的底层实现和数据持久化
数据库·redis·缓存