Mysql安装部署指南(Docker、Linux)

879 阅读8分钟

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

  • 在线音乐戳我呀!
  • 音乐博客源码上线啦!
  • 前两个月有一段时间没有写文章了,不是我懒,而是最近项目加班太严重了,连续加班一个星期,项目经理自己下班早,看不到凌晨三点努力的我们,就说版本不可延期,上线后请一天假休息还撕破嘴皮。
  • 做一件事,最心酸的莫过于你已经很努力干活了,甚至没有一点怨言,只想听到别人对你的赞扬,心里可能就足矣,最怕人家根本不领情,反倒过来说你这不好,那不好。
  • 当然晚上还是会花点时间学习,毕竟时间就像牛奶一样,挤一点总会有的。
  • 之前在顺德工作服务器是Win,导致我的服务器一直都是Win,换工作到广州,服务器基本都是Linx,发现Linx各种好,对于我现在,空间是一道硬伤,于是我决定迁移成Linx系统。
  • 下面一步一步带你走进全过程 | Mysql篇。

今年做的最好的一件事无非是:帮女友预约九价、陪打(很难预约?没有的事,有钱确实可以为所欲为,一个星期左右约了就打上了)。

46.jpg

需求

目前音乐博客部署在Win7上,应用主要有:

  • 后端有
  • 数据库有
    • Java连接Oracle,需要安装Oracle镜像
    • Node连接Mysql,需要安装Mysql镜像(✔️)
  • 前端项目部署在Nginx,需要安装Nginx镜像
  • 歌词服务也是部署在Node上
  • Node连接的是Mysql,需要安装Mysql镜像
  • Java连接的是Oracle,需要安装Oracle镜像
  • 音乐文件存放在Minio上

需要将以上应用迁移到Linx上,干!

很多公司不让碰服务器,现在可以看看关注我,记录从Linux上无到有,全过程。
这一篇是主要还是写给还在用win服务器的、准备迁移Linux的朋友,可以练习迁移服务器到Linux,Linux有很多好处,最可见的就是空间、速度快...
迁移过程中,势必会有很多坑等着你来解决,上方的需求都会写上,本篇主要讲解Docker、Linux部署Mysql,其他应用后续持续更新,敬请期待!

一、Docker安装mysql并连接

1.1 查找镜像

docker search mysql

也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本

34.png

1.2 下载镜像

1.1 查找镜像,可以指定想要的版本,不指定则为最新版。

docker pull mysql:5.7

1.3 通过镜像创建容器并运行

目前我使用第一种运行镜像。

docker run  
--name mysql5.7 
-p 3306:3306 
-e MYSQL_ROOT_PASSWORD=123456 
-d mysql:5.7

当然,也可以通过自定义配置。

MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf 文件。新建的文件可以任意起名,只要保证后缀名是 cnf 即可。新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项。

docker run -p 3306:3306 
--name mymysql 
-v $PWD/conf:/etc/mysql/conf.d 
-v $PWD/logs:/logs 
-v $PWD/data:/mysql_data 
-e MYSQL_ROOT_PASSWORD=123456 
-d mysql:5.7

参数说明

  • -p 3306:3306

    • 将容器的 3306 端口映射到主机的 3306 端口。
  • -e MYSQL_ROOT_PASSWORD=123456

    • 初始化 root 用户的密码。
  • -v $PWD/conf:/etc/mysql/conf.d

    • 将主机当前路径下的conf目录挂载到容器的/etc/mysql/conf.d目录。
  • -v $PWD/logs:/logs

    • 将主机当前目录下的logs目录挂载到容器的/logs。
  • -v $PWD/data:/mysql_data

    • 将主机当前目录下的data目录挂载到容器的/mysql_data。
  • --lower_case_table_names=1

    • 设置表名参数名等忽略大小写。
  • -v /etc/localtime:/etc/localtime:ro

    • 设置容器的时间与宿主机同步。

1.4 安装后的修改

🍅 当然你也可以不需要。看自己情况决定修改哦~

docker启动一个区分大小写的Mysql。

1.4.1 方法一:连接数据库修改配置文件以区分大小写

连接MySQL:查看当前mysql的大小写敏感配置。

show global variables like '%lower_case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | ON    |
| lower_case_table_names | 0     |
+------------------------+-------+

lower_case_file_system表示当前系统文件是否大小写敏感,只读参数,无法修改。

  • ON 大小写不敏感
  • OFF 大小写敏感

进入docker的MySQL容器,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下添加如下:

[mysqld]
lower_case_table_names=1

保存,退出容器;

执行sudo docker restart MySQL ,重启MySQL即可查看:

mysql> show global variables like '%lower_case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.00 sec)

1.4.1 方法二: 在运行镜像的时候,添加参数以区分大小写

# 一
docker run --name mysql5.7 -p 3306:3306 
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
--lower_case_table_names=1

# 二
docker run -p 3306:3306 --name mysql 
-v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs
-v $PWD/data:/mysql_data 
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 
--lower_case_table_names=1

关键命令:--lower_case_table_names=1 设置表名参数名等忽略大小写

我自己的启动测试命令如下:

docker run -p 3306:3306 --name mysql5.7 -v 
/Volumes/data/develop/mysql/5.7/logs:/var/log/mysql -v 
/Volumes/data/develop/mysql/5.7/data:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=password -e TZ='Asia/Shanghai' 
-d mysql:5.7 --lower_case_table_names=1

参数说明

  • password 自己修改成自己的密码

  • --restart=always  表示可自动重启

如果需要自己定义的配置文件则 添加  -v /Volumes/data/develop/mysql/conf/my.cnf 宿主机文件;/etc/mysql/my.cnf docker容器内的目录文件。

docker安装启动成功后,可以用命令:

[root@chtest ~]# docker exec -it mysql bash

进入docker容器,修改mysql 访问授权。

root@da55138960a4:/# mysql -h localhost  -uroot  

mysql> grant all privileges on *.* to root@"%" identified by "chbigdata" with grant option;

Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges; 

Query OK, 0 rows affected (0.00 sec)

1.5 navicat for mysql连接mysql发现报错

此时,用navicat for mysql连接mysql发现报错:Client does not support authentication protocol requested  by server

35.png

🍅 当然和上方操作的区分大小写数据库无关,是安装运行mysql下没有配置权限的原因。

解决方案

进入容器:

docker exec -it 62349aa31687 /bin/bash

进入mysql:

mysql -uroot -p

授权:

GRANT ALL ON *.* TO 'root'@'%';

刷新权限:

flush privileges;

更新加密规则:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更新root用户密码:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限:

flush privileges;

二、Linux安装mysql并连接

Linux中我们使用yum安装mysql。

2.1 Linux中安装yum

yun install -y telnet

36.png

2.2 先检查系统是否装有mysql

yum list installed mysql*

rpm –qa|grep mysql*

2.3 查看有没有安装包

yum list mysql*

2.4 安装mysql客户端

yum install mysql

2.5 安装mysql服务端

yum install mysql-server

yum install mysql-devel

2.6 在/etc/my.cnf 文件中加入默认字符集

vim /etc/my.cnf

37.png

2.7 启动或者关闭mysql服务

service mysqld start --启动mysql 
#或者 
/etc/init.d/mysqld start 

#关闭mysql 
service mysql stop

2.8 设置开机启动mysql服务

chkconfig --add mysqld

38.png

2.9 创建root用户 密码为123456

mysqladmin –u root password 123456

2.10 连接mysql

mysql -u root -p --输入密码123456

39.png

2.11 设置远程访问权限

use mysql;

GRANT ALL PRIVILEGES ON *.* TO "admin"@"%"IDENTIFIED BY "admin" WITH GRANT OPTION; 
--第一个admin为用户名,第二个admin为密码,%表示所有的电脑都可以链接

flush privileges; --设置立即生效

40.png

SELECT DISTINCT CONCAT('User:''',user,'''@''',host,''';') AS query FROM mysql.user;

exit; --退出mysql服务
vi /etc/my.cnf


[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
default-character-set=utf8
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#设备地址
bind-address=0.0.0.0 #设置设备地址 
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@localhost ~]# service mysqld start --重启mysql服务
 
[root@localhost ~]# mysql -u root -p --连接mysql输入密码

mysql> select version(); --查看版本号
 
mysql> show global variables like 'port'; --查看端口号
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.00 sec)

2.12 使用navcat连接mysql

42.png

三、 Linux卸载mysql

//rpm包安装方式卸载
查包名:rpm -qa|grep -i mysql
删除命令:rpm -e –nodeps 包名
 
//yum安装方式下载
1.查看已安装的mysql
命令:rpm -qa | grep -i mysql
2.卸载mysql
命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64
查看mysql的其它依赖:rpm -qa | grep -i mysql
 
//卸载依赖
yum remove mysql-libs
yum remove mysql-server
yum remove perl-DBD-MySQL
yum remove mysql

最后

我们完成了需求之二:Mysql作为Node连接需要的数据库,已迁移到Linux的Docker中。

我们总是喜欢以项目来驱动学习,不是吗?

我也是,通过个人项目 - 在线音乐 来驱动我学习Linux系统、Docker、Java、Nginx等等前端可能接触不到的知识,我想这可能就是管理层的“广度”。

下篇讲解Nginx,回见啦~

相关文献

使用docker安装mysql并连接

linux 使用yum安装mysql详细步骤

linux卸载mysql(完全卸载)

Docker 安装MySQL 5.7

以往推荐

Typora拖拉图片生成在线图片 | Gitee图床

多图详解,一次性啃懂原型链(上万字)

Vue-Cli3搭建组件库

Vue实现动态路由(和面试官吹项目亮点)

项目中你不知道的Axios骚操作(手写核心原理、兼容性)

VuePress搭建项目组件文档

vue-typescript-admin-template后台管理系统

原文链接

juejin.cn/post/702207…