本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
- 在线音乐戳我呀!
- 音乐博客源码上线啦!
- 前两个月有一段时间没有写文章了,不是我懒,而是最近项目加班太严重了,连续加班一个星期,项目经理自己下班早,看不到凌晨三点努力的我们,就说版本不可延期,上线后请一天假休息还撕破嘴皮。
- 做一件事,最心酸的莫过于你已经很努力干活了,甚至没有一点怨言,只想听到别人对你的赞扬,心里可能就足矣,最怕人家根本不领情,反倒过来说你这不好,那不好。
- 当然晚上还是会花点时间学习,毕竟时间就像牛奶一样,挤一点总会有的。
- 之前在顺德工作服务器是Win,导致我的服务器一直都是Win,换工作到广州,服务器基本都是Linx,发现Linx各种好,对于我现在,空间是一道硬伤,于是我决定迁移成Linx系统。
- 下面一步一步带你走进全过程 | Mysql篇。
今年做的最好的一件事无非是:帮女友预约九价、陪打(很难预约?没有的事,有钱确实可以为所欲为,一个星期左右约了就打上了)。
需求
目前音乐博客部署在Win7上,应用主要有:
- 后端有
- Java作为第三方应用,需要安装Java镜像(👌🏻)
- Node作为主后台,需要安装Node镜像
- 数据库有
- 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,选择自己需要的版本,否则会下载最新版本。
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
🍅 当然和上方操作的区分大小写数据库无关,是安装运行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
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
2.7 启动或者关闭mysql服务
service mysqld start --启动mysql
#或者
/etc/init.d/mysqld start
#关闭mysql
service mysql stop
2.8 设置开机启动mysql服务
chkconfig --add mysqld
2.9 创建root用户 密码为123456
mysqladmin –u root password 123456
2.10 连接mysql
mysql -u root -p --输入密码123456
2.11 设置远程访问权限
use mysql;
GRANT ALL PRIVILEGES ON *.* TO "admin"@"%"IDENTIFIED BY "admin" WITH GRANT OPTION;
--第一个admin为用户名,第二个admin为密码,%表示所有的电脑都可以链接
flush privileges; --设置立即生效
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
三、 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,回见啦~
相关文献
以往推荐
vue-typescript-admin-template后台管理系统