MySQL数据库编译及安装

将安装mysql 所需软件包传到/opt目录下

bash 复制代码
cd /opt
mysql-5.7.20.tar.gz
boost_1_59_0.tar.gz
#支持c++的运行库
安装环境依赖包
bash 复制代码
yum -y install \
gcc \
gcc-c++ \
ncurses \
#字符终端下图形互动功能的动态库
ncurses-devel \
#ncurses开发包
bison \
#语法分析器
cmake
#mysql需要用cmake编译安装
---------------------------------
yum -y install \
gcc gcc-c++ \
ncurses \
ncurses-devel \
bison \
cmake \
openssl-devel
配置软件模块
bash 复制代码
cd /opt
tar xf mysql-5.7.20.tar.gz
tar xf boost_1_59_0.tar.gz

mv boost_1_59_0 /usr/local/boost
#将boost文件重命名

cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \
#指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \
#指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \
#指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件
----------------------------------------------------------------------
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_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
#注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
编译及安装
bash 复制代码
make -j4 && make install
#编译并安装
#编译时使用4核同时工作,能够有效缩短时间,但请注意不可超过配置的cpu数量
创建mysql用户
bash 复制代码
useradd -M -s /sbin/nologin  mysql
#创建用户,但不创建家目录,且指定程序用户不可登录
修改mysql 配置文件
bash 复制代码
vim /etc/my.cnf
#删除原配置项,再重新添加下面内容

[client]
#客户端设置
port = 3306
socket = /usr/local/mysql/mysql.sock			

[mysql]
#服务端设置
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash
#开启自动补全功能

[mysqld]
#服务全局设置
user = mysql
#设置管理用户
basedir=/usr/local/mysql
#指定数据库的安装目录
datadir=/usr/local/mysql/data
#指定数据库文件的存储路径
port = 3306
#指定端口
character-set-server=utf8
#设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid
#指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock
#指定数据库连接文件
bind-address = 0.0.0.0
#设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve
#禁止域名解析,包括主机名,所以授权的时候要使用 IP 地址
max_connections=4096
#设置mysql的最大连接数
default-storage-engine=INNODB
#指定默认存储引擎
max_allowed_packet=32M
#设置在网络传输中一次消息传输量的最大值。系统默认值为 1MB,最大值是 1GB,必须设置 1024 的倍数。
server-id = 1
#指定服务ID号

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
------------------------------------------------------------------------------------
[client]
port=3306
socket=/usr/local/mysql/mysql.sock

[mysql]
port=3306
socket=/usr/local/mysql/mysql.sock
auto-rehash

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character-set-server=utf8
pid-file=/usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address=0.0.0.0
skip-name-resolve
max_connections=4096
default-storage-engine=INNODB
max_allowed_packet=32M
server-id=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
更改mysql安装目录和配置文件的属主属组
bash 复制代码
chown -R mysql:mysql /usr/local/mysql/
#修改文件目录的属主及属组
chown mysql:mysql /etc/my.cnf
#修改配置文件的属主及属组
设置路径环境变量
bash 复制代码
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
#将mysql服务命令路径加入$PATH,写入到profile文件中
source /etc/profile
#不用重启服务,重载配置文件
初始化数据库
bash 复制代码
cd /usr/local/mysql/bin/

./mysqld \
--initialize-insecure \
#生成初始化密码为空
--user=mysql \
#指定管理用户
--basedir=/usr/local/mysql \
#指定数据库的安装目录
--datadir=/usr/local/mysql/data
#指定数据库文件的存储路径
----------------------------------------
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
添加mysqld系统服务
bash 复制代码
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#用于systemctl服务管理
systemctl daemon-reload
#刷新识别     
systemctl start mysqld.service
#开启服务
systemctl enable mysqld
#开机自启动
netstat -anpt | grep 3306
#查看端口
修改mysql 的登录密码
bash 复制代码
mysqladmin -u root password "abc123"
#给root账号设置密码为abc123,原始密码为空
授权远程登录
bash 复制代码
mysql -u root -p
(mysql -u root -pabc123  #可直接免交互登录)

> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限

> show databases;
#查看当前已有的数据库

> quit
#退出
相关推荐
2501_9159090611 小时前
抓包工具断点拦截是什么?如何半路拦截修改 HTTP 请求
网络协议·计算机网络·网络安全·adb·https·udp
misty youth2 天前
Navicat与PHPstudy小皮
mysql·adb·php·navicat
for_ever_love__3 天前
MySQL 8.0 数据类型选型指南:INT、DECIMAL、VARCHAR 与时间字段怎么选
mysql·adb·数据类型·varchar·长度·字段类型选择
yeflx5 天前
Ubuntu22.04安装Mysql Workbench
数据库·mysql·adb
夜雪一千5 天前
MySQL 自增 ID 的底层原理与坑点
android·mysql·adb
Dxy12393102165 天前
MySQL JSON 生成列索引原理、实战与坑点
mysql·adb·json
远方 hi5 天前
MySQL 管理
adb
夜雪一千6 天前
MySQL 删除 JSON 类型的数据实战
mysql·adb·json
千码君20168 天前
个人开发者:安卓手机adb调试
android·adb·智能手机