MySQL快速安装和初始化笔记

  • A+
所属分类:操作系统

Linux系统下快速安装MySQL,使用单机多实例的方式初始化实例,并启动实例。以及一些常用的配置等信息。

前言

这个部署流程较为简单,只是为了尽快启动个MySQL用作测试。比如用于开发或跑个测试什么的。
如果是用于线上生产,建议再做优化,特别是配置文件这里。

部署MySQL

安装

CentOS7需要安装yum源

CentOS7中MySQL数据库已从默认的程序列表中移除,替换成了MariaDB。所以需要去下载yum源。官方yum源链接

便捷安装命令
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

如果是fedora则不需要

安装MySQL

yum install community-mysql-server

配置MySQL的账号

MySQL不建议在root账号下运行,所以需要创建一个低权限的账号。

groupadd mysql
useradd -g mysql mysql

帮助手册

mysqld --verbose --help

初始化实例

如果直接通过systemd或者直接运行MySQL启动MySQL,那么数据库会被初始化到/var/。但默认的方式会让日志数据分的比较远。
单机多实例管理,通常会把日志数据放到一个指定的目录里,那需要将MySQL相关的参数做自定义。
通常会把写在配置文件里,从/etc/my.cnf复制出来修改。

准备操作

选择/data/my3306作为实例目录。

实例目录: /data/my3306
数据目录/data/my3306/data,用于保存数据。
日志目录/data/my3306/log,用于保存alert日志。
运行时文件/data/my3306/run,用于保存sock,pid等临时文件。
配置文件: /data/my3306/my.cnf

快速执行脚本

mkdir -p /data/my3306
mkdir -p /data/my3306/data
mkdir -p /data/my3306/log
mkdir -p /data/my3306/run
chown -R mysql:mysql /data/my3306

配置文件

这是对应的配置文件,将其保存到 /data/my3306/my.cnf即可。

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
user=mysql
datadir=/data/my3306/data/
socket=/data/my3306/run/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/data/my3306/log/mysqld.log
pid-file=/data/my3306/run/mysqld.pid

执行初始化

5.7后mysqld承担初始化动作,另外默认账号root的密码会被初始化写到日志里,要想偷懒的话用--initialize-insecure,这样密码默认为空。

不安全的初始化

mysqld  --defaults-file=/data/my3306/my.cnf --initialize-insecure
## 注意返回值,避免没初始化完成。
echo $?

标准初始化

mysqld  --defaults-file=/data/my3306/my.cnf --initialize

启动

配置文件已经写好了对应的地址,所以只要指向配置即可启动。

nohup mysqld --defaults-file=/data/my3306/my.cnf &

授权

登录

本地通过127.0.0.1免密登录。

 mysql -h127.0.0.1 --user=root

创建测试账号

创建一个无需密码的账号,并授予最高权限。

create user 'test'@'%' identified by '';
GRANT ALL ON *.* TO 'test'@'%'; # *.*

常见问题处理

未初始化完成导致启动失败

Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

注意data文件夹,肯定没有mysql的文件夹。这说明初始化存在异常,没有初始化完成。所以需要注意初始化动作的返回值是否为0.

没有文件权限导致的启动时报错

[ERROR] InnoDB: Plugin initialization aborted with error Generic error

这种情况通常是data目录的权限问题。

chown -R mysql:mysql data

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: