MySQL服务的安装和配置

文章目录

前言
MySQL服务的安装和配置

在Windows上安装和配置

下载
配置
初始化

在CentOS上安装(yum)

删除已安装的MySQL
添加MySQL Yum Repository
安装MySQL

二进制安装部署

准备安装包
准备环境
启动数据库

单独安装MySQL客户端

总结


前言

这个是一个学习MySQL的安装、使用、优化和运维等的系列笔记,本篇是第一篇,后续还会不断更新。可能会比较零散,最后希望能整理成完成学习路径。

MySQL服务的安装和配置

在Windows上安装和配置

下载

下载地址
https://dev.mysql.com/downloads/

选择 MySQL Community Server (社区版)

下载打包的安装文件
如下图:

也可以下载MSI安装包直接下一步安装就行,这里进行静默安装的讲解。

配置

按以下项进行配置

[mysqld]
# 设置mysql的安装目录
basedir=C:/MyProject/mysql-8.0.20-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:/MyProject/mysql-8.0.20-winx64/data
# 设置默认使用的端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人试图攻击数据库
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则使用的字符集
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用"mysql_native_password"插件作为认证加密方式,否则会出现客户端连接出错
# MySQL8.0默认认证加密方式为"caching_sha2_password"
default_authentication_plugin=mysql_native_password

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4
port=3306

初始化

进入到MySQL安装目录的bin目录下,使用以下命令进行初始化

mysqld --initialize-insecure --user=mysql --console

insecure – 不会产生随机密码,第一次登陆数据库使用空密码

安装服务,在bin目录下,使用以下命令将MySQL服务加入到系统服务中

mysqld -install [服务名](如:mysql/mysql58 等)

启动/关闭服务

net start mysql(服务名,需要根据自己的服务名进行替换)
net stop mysql(服务名,需要根据自己的服务名进行替换)

cmd必须以管理员身份启动才能执行上述命令

连接和初始化密码

# 连接MySQL服务
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
# 允许远程连接
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;

注:5.8版本废弃了password()函数,用update语句修改密码已经不适用了

在CentOS上安装(yum)

MySQL也是在root用户下进行安装的;

本次使用yum进行安装,主要参照:https://juejin.im/post/5d07cf13f265da1bd522cfb6#heading-51 (该文章中也提供了其他方法);

删除已安装的MySQL

查MariaDB

rpm -qa|grep mariadb

复制代码删除mariadb

如果不存在(上面检查结果返回空)则跳过步骤;

rpm -e --nodeps mariadb-server
rpm -e --nodeps mariadb
rpm -e --nodeps mariadb-libs

其实yum方式安装是可以不用删除mariadb的,安装MySQL会覆盖掉之前已存在的mariadb;

检查MySQL

rpm -qa|grep mysql

添加MySQL Yum Repository

从CentOS 7开始,MariaDB成为Yum源中默认的数据库安装包。也就是说在CentOS 7及以上的系统中使用yum安装MySQL默认安装的会是MariaDB(MySQL的一个分支)。如果想安装官方MySQL版本,需要使用MySQL提供的Yum源。

下载MySQL源
官网地址:https://dev.mysql.com/downloads/repo/yum/
查看系统版本:

cat /etc/redhat-release

选择对应的版本,使用wget命令进行下载

安装MySQL源
本次安装命令如下:

rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

检查是否安装成功
执行成功后会在 /etc/yum.repos.d/ 目录下生成两个repo文件 mysql-community.repomysql-community-source.repo

并且通过 yum repolist 可以看到mysql相关资源:

yum repolist enabled | grep "mysql.*-community.*"
!mysql-connectors-community/x86_64 MySQL Connectors Community                108
!mysql-tools-community/x86_64      MySQL Tools Community                      90
!mysql80-community/x86_64          MySQL 8.0 Community Server                113

安装MySQL

sudo yum install mysql-community-server

该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等;

另外,本次安装的是最新的MySQL8,如果想要选择版本的话请参照最开始的参照文章进行设置;

启动MySQL
启动

sudo systemctl start mysqld.service
# centos6
sudo service mysqld start

查看状态

sudo systemctl status mysqld.service
# centos6
sudo service mysqld status

停止

sudo systemctl stop mysqld.service
# centos6
sudo service mysqld stop

重启

sudo systemctl restart mysqld.service
# centos6
sudo service mysqld restart

修改密码

初始密码

MySQL第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件中:

grep 'temporary password' /var/log/mysqld.log

修改默认密码

先使用以下命令登录MySQL:

mysql -uroot -p

再使用以下命令修改root用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx';

允许root远程访问

通过修改user表来实现

use mysql;
update user set host = '%' where user = 'root';
select host, user from user;

这里有多种方式,参照:https://www.cnblogs.com/cnblogsfans/archive/2009/09/21/1570942.html

设置编码为utf-8

查看编码

SHOW VARIABLES LIKE 'character%';

设置编码

编辑/etc/my.cnf,[mysqld]节点增加以下代码:

[mysqld]
character_set_server=utf8
init-connect='SET NAMES utf8'

一般MySQL8中已经默认编码是 utf8mb4 了;

设置开机启动

systemctl enable mysqld
systemctl daemon-reload

二进制安装部署

以Linux通用版(generic)为例

准备安装包

下载并上传二进制文件或者直接使用 wget 命令下载,解压并移动到指定目录。
这里使用 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 版本,命令如下:

# 解压
tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
# 创建目录
mkdir /application
# 将MySQL文件移动并重命名
mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql

准备环境

处理原始环境

# 查看是否安装 mariadb
rpm -qa|grep mariadb
# 如果有,使用下面的命令卸载掉相关软件,否则会初始化失败
rpm -e mariadb
# 如果因为被依赖而无法卸载的话,可以使用以下命令进行卸载
yum remove mariadb-libs-xxxx -y
# 也可以加上 --nodeps 不检查依赖关系强制卸载
rpm -e --nodeps mariadb

配置环境变量

# 配置环境变量
vim /etc/profile
# 在最后一行添加下面的代码
export PATH=/application/mysql/bin:$PATH
# 让配置生效
source /etc/profile
# 查看MySQL版本(确认环境变量是否生效)
mysql -V

挂载数据盘

# 创建数据路径
# 在虚拟机上可以添加一块新磁盘模拟数据盘
# 查看磁盘情况
fdisk -l
# 可看到新加的虚拟硬盘,一般名为:Disk /dev/sdb
# 格式化
mkfs.xfs /dev/sdb
# 创建目录
mkdir /data
# 挂载
# 查看磁盘的UUID
blkid
# 在配置文件中将磁盘挂载到 data 目录下
vim /etc/fstab
# 添加以下代码
UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxx /data xfs defaults 0 0
# 自动挂载
mount -a
# 查看是否挂载成功
df -h
# 未挂载成功的话,也可以使用以下方法
cd /sys/class/scsi_host
echo "---" > host0/scan # 接口扫描新加磁盘

创建用户并授权

# 创建管理MySQL的用户(不需要有登录权限)
useradd -s /sbin/nologin mysql
# 授权
mkdir /data/mysql/data -p
chown -R mysql.mysql /application/*
chown -R mysql.mysql /data

初始化数据(创建系统数据)

# 5.6的命令是:/application/mysql/scripts/mysql_install_db
# 先进入MySQL安装目录
cd /application/mysql/
# 初始化
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
# 如果初始化报错缺少 libaio 的话,需安装 libaio-devel
yum install -y libaio-devel
# 初始化后会生成一个临时密码,如下:
#### ..... A temporary password is generated for root@localhost: xxxxxx

参数说明:
initialize
1.对密码复杂度进行定制,包含四种字符且达到12位;
2.给root@localhost 用户设置临时密码;
initialize-insecure : 无限制无临时密码,生产中往往使用该方式初始化。

配置文件

# 准备配置文件
# 在 /etc/my.cnf 中写入以下项(最基本的配置项)
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF

启动数据库

1.使用 sys-v

# 进入命令所在目录
cd /application/mysql/support-files/
# 启动
./mysql.server start

# 还可以将 mysql.server 命令放到init.d中管理
## 将命令拷贝到 init.d
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
## 启动
service mysqld start
# 同 /etc/init.d/mysql start
# 实际上是启动了 mysql.server 然后调用了 /application/mysql/bin/mysqld_safe(脚本)  然后启动了 mysqld

# 以上还包括 start|stop|restart|status 等

2.使用systemd管理MySQL服务(5.7的新特性)

# 将MySQL服务加入systemd
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF

# 启动
systemctl start mysqld

# 设置开机启动
systemctl enable mysqld

## 判断服务是否启动
netstat -lnp|grep mysqld
netstat -lnp|grep 3306
ps -ef |grep mysqld
systemctl status mysqld
ss -tulpn|grep mysqld
ss -tulpn|grep 3306
lsof -i :3306

单独安装MySQL客户端

以centos为例

根据系统情况选择安装包

# 查看系统版本
cat /etc/redhat-release
# 查看系统信息
uname -a

使用rpm命令安装

# 例如
rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm

如遇报错,可能是以下种情况
首先看报错信息需要libscommon依赖包;
如果是,则要看系统是否已安装mariadb服务,需要先卸载mariadb-libs,代码如下:

# 查看是否安装mariadb服务
rpm -qa | grep mariadb
# 卸载
rpm -e --nodeps mariadb-libs

卸载后再依次使用rpm命令安装libscommonclient

总结

本篇文章写了MySQL在Windows和Linux两种系统上的安装,Linux上的安装是重点。
另外,Linux上的安装方式还有RPM和源码安装,后续会加上。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容