建议程序和根分开,互不影响,并且使用逻辑卷进行存放,因为逻辑卷可以扩展
实战案例一:二进制格式安装 MySQL 5.6
准备用户
groupadd -r -g 306 mysql 创建组指定gid
useradd -r -g 306 -u 306 -d /data/mysql mysql 创建用户指定组、uid /data/mysql数据存放路径
准备数据目录,建议使用逻辑卷
mkdir -p /data/mysql 创建目录
chown mysql: mysql /data/mysql 指定所有者和所属组
准备二进制安装包
官网下载:https://dev.mysql.com/
点击DOWNLOADS,点击MySQL Community (GPL) Downloads »
点击Download Archives,点击MySQL Community Server
选择版本Product Version:5.6.51
选择操作系统类型Operating System:Linux Generic 选择64位
解压缩:tar xf mysql-VERSION-linux-x86_64.tar.gz -C /usr/local
此时必须安装在/usr/local路径下,应为编译时已经约定好安装路径/usr/local
cd /usr/local
ln -sv mysql-VERSION mysql
chown -R root:root /usr/local/mysql/
准备配置文件
/cd/usr/local/mysql
cp -b support-files/my-default.cnf /etc/my.cnf 把范例cp作为初始配置文件
vim/etc/my.cnf mysql语句块中添加以下三个选项
[mysqld]
datadir=/data/mysql 核心,必须加
innodb_file_per_table= ON 在mariadb5.5以上版的是默认值,可不加
skip_name_resolve= ON 禁止主机名解析,建议使用
创建数据库文件(自带的脚本生成若干初始化基础文件)
cd/usr/local/mysql/
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
准备服务脚本,并启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysql
service mysqld start
如果有对应的service 文件可以执行下面
cp /usr/local/mysql/support-files/systemd/mariadb.service /usr/etc/init.d/mysqld/system
systemctl daemon-reload
systemctl enable --now mariadb
PATH路径
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysqld.sh
生效
./etc/profile.d/mysqld.sh
安全初始化
/usr/local/mysql/bin/mysql_secure_installation
mysqld安装完成
初始化数据库文件并提取root密码
方式一:初始化数据库文件生成随机密码
mysqld --initialize --user=mysql --datadir=/data/mysql生成root的随机密码
grep password //mysql/mysql.log查找日志找密码
awk '/temporary password/{print $NF}' /data/mysql/mysql.log查找日志找密码
方式二:生成root空密码
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
实战案例二:二进制格式安装MySQL5.7和MySQL 8.0(工作主流,建议安装)
下载安装包
官网下载:https://dev.mysql.com/
点击DOWNLOADS,点击MySQL Community (GPL) Downloads »
点击Download Archives,点击MySQL Community Server
选择版本Product Version:8.0.28
选择操作系统类型Operating System:Linux Generic
Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive 1148.5M
安装相关依赖包
yum -y install libaio numactl-libs ncurses-compat-libs安装依赖包
用户和组
groupadd -g 336 -r mysql创建组并指定组ID -r系统帐号
useradd -u 336 -g mysql -s /sbin/nologin -d /data/mysql -r mysql
创建系统用户并指定UID、指定组、shell、家目录
getent passwd mysql 查询有没有注册好
准备数据库路径
准备文件夹:mkdir /data/mysql -p 创建data下的mysql文件夹 -p递归,不用进入data直接建
指定文件夹所有者和所属组:chown mysql.mysql /data/mysql
创建逻辑卷
将目录data挂载到逻辑卷上
把安装包解压:tar xf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz -C /usr/local
查看文件大小:du -sh /usr/local/mysql-8.0.28-linux-glibc2.12-x86_64
要求把目录改成软链接:ln -s mysql-8.0.28-linux-glibc2.12-x86_64/ mysql
但是/usr/local下的mysql这个文件夹的所属组和所有者都是数字,需要改成root
重置所有者和所属组:chown -R root.root mysql/
创建一个配置文件vim /etc/my.cnf 最关键设datadir=/data/mysql 数据库放在这里
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
初始化数据库
ls /usr/local/mysql/bin
下面有mysqld
把 /usr/local/mysql/bin下的脚本放到PATH变量里面
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysqld.sh
生效. /etc/profile.d/mysqld.sh
初始化数据库文件并提取root密码(可使用第二种方式)
方式一:初始化数据库文件生成随机密码
mysqld --initialize --user=mysql --datadir=/data/mysql生成root的随机密码
grep password //mysql/mysql.log查找日志找密码
awk '/temporary password/{print $NF}' /data/mysql/mysql.log查找日志找密码
方式二:生成root空密码
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
准备服务脚本和启动
查找启动脚本 mysql.server
ls /usr/local/mysql/support-files/
拷贝脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
添加mysqld服务并启动
chkconfig --add mysqld
service mysqld start
mysql就可以启动了 默认是空密码进去改密码
mysqladmin password 123456
输新密码登录 mysqladmin -p (不指定用户默认root,指定用户 -u)
123456
基于Docker容器创建MySQL
apt update
apt -y install docker.io
docker run --name mysql -d -p 3306:3306 -e MTSQL_ROOT_PASSWORD=123456 mysql:5.7.30
或者
docker run --name mysql -d -p 3306:3306 -e MTSQL_ROOT_PASSWORD=123456 mysql:8.0
mysql -uroot -p123456 -h127.0.0.1