• 【Boot开发】Git工具详解,服务器搭建java和mysql环境由systemctl管理


    SpringBoot


    Linux–Docker,服务器搭建java和mysql环境,systemctl管理服务,详解Git


    之前分享了docker技术和项目的发布部署,使用docker部署无疑是非常方便的,不用再担心环境的问题,因为只要提供内核,上面一整套环境都是容器设置好的,并且可以通过仓库push/pull的方式和save/load的方式快捷分享;这里会花费一点内容解释Git,毕竟和docker相似,并且之前对该技术只是简单使用没有记录springboot使用全流程包括使用docker发布【或者单纯部署到服务器】前面的博客已经提过

    纯技术的东西就在其他专栏分享了,最近会分享JUC等多线程高并发问题~,本专栏接下来就是项目的经验和一些零碎的knowledge

    Git 管理tool

    Git就是一个分布式的版本控制系统,是一个多人协作工具。基于快照,离线操作【没有中央库】,分支合并,即时灵活

    Git有四个工作区域

    • Workspace: 工作区, 也就是存放项目代码的位置,比如Cfeng的chat项目的D:\softVm\xiaohuanChat 这也是IDEA中引入位置
    • Index/stage: 暂存区: 用于临时存放改动信息,事实上就是一个文件,保存即将提交的文件列表信息
    • Repository: 本地仓库区【版本库】, 安全存放数据的位置,有commit的所有的本本的数据,HEAD指向最新的版本
    • Remote: 远程仓库,托管代码的服务器,用于远程数据交换

    查看源图像

    一般工作流程:

    从远程仓库克隆Git资源作为本地仓库; 从本地仓库checkout代码之后代码修改,提交前先将代码提交到暂存区index,之后提交修改到本地仓库reposiroty,本地仓库保存修改的各个历史版本,修改完成需要共享,push到远程仓库 【push和pull和docker一样】

    Git安装

    git有各种系统的版本,docker一般选择Linux版本,git 这里就选择windows版本,下载地址: Git - Downloads (git-scm.com)

    下载完成之后直接点击该.exe安装程序,一路next,选择一个合适的位置存放,选择components时候选择Windows Exploer intergration(Bash,GUI)不需要Additional icons,一路next,选择Use Bash(不需要windows命令行),一路next,安装完成🍅

    最后可以使用git config --global命令加入全局参数标识user.email和name

    git config --global user.email 'zjn3373163.com'   //欢迎私信
    git config --global user.name 'Cfeng'
    
    • 1
    • 2

    Git常用命令

    img

    git config 配置Git相关参数【全局、仓库、系统】

    仓库级: 在仓库的.get/.gitconfig,该配置文件只对所在的仓库有效

    全局配置: C盘的.gitconfig下面,一般设置本地的name和email

    系统配置: 在Git的安装目录下的gitconfig

    //查看配置信息
    -local  --global --system
    
    查看生效的配置
    git config -l
    编辑配置文件
    git config 《选择 --global》 -e  //下面都使用《》代表选择配置文件
    增加配置项,获取配置项,删除
    git config 《》 --add/--get/--unset  配置name
    配置提交记录的客户识别信息
    git config --global user.name XXX   / user.email XXX
    配置Git缓存区大小,缓存密码,缓存时间,长期存储密码 【global的httpBuffer和credential.helper配置项】
    git config --global http.postBuffer 大小
    git config --global credential.helper  cache
    git config --global credential.helper 'cache --timeout=时间'
    git config --global  credential.helper   store
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    git clone 《远程仓库》 《本地目录》 从远程仓库克隆一个版本库到本地

    默认是在当前目录创建和版本库名相同的文件夹下载
    git clone 《远程仓库地址》
    
    指定本地仓库目录
    git clone  《远程仓库》 《本地目录》
    
    -b【branch】指定要克隆的分支,默认master
    git clone 《远程仓库》 -b   《分支名称》  《本地目录》
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    git init 初始化项目所在目录,生成本地参控股

    初始化后会出现一个.git目录

    git status 查看本地仓库状态【修改的文件】

    -s  : 以简短模式查看状态
    显示两列: 一列文件状态,一列文件
    git status -s
    
    • 1
    • 2
    • 3

    git remote 操作本地仓库对应的远程仓库【增加、查看、删除、修改】

    查看当前本地仓库连接的远程仓库
    git remote 
    git remote -v
    git remote --verbose    列出详细信息,URL地址
    
    为本地版本库添加远程仓库  《远程仓库别名》 《远程仓库URL别名》 git remote add orgin git@gitee.com:zhang-junning-huan/xiaohuanChat.git    这里就是创建了本地版本库的远程仓库,为URL创建别名origin 
        
    git remote add 《远程仓库别名》 《远程仓库地址》
    
    git remote rename 《原远程仓库别名》  《新的别名》
        
    删除远程仓库
    git  remote   remove  《远程仓库别名》
        
    修改远程仓库的URL
    git remote  set-url  《远程仓库别名》  《新的远程仓库URL地址》
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    git branch 操作Git分支【CRUD】

    Git的一个重要操作就是分支合并保证工程的效率

    列出所有的分支[Cfeng这里就创建仓库时只有master分支]
    git branch
    git branch -v   显示详细,会显示最后一次提交【该分支】
    
    创建分支,新分支基于上一次的提交建立
    git branch 《分支名称》
    
    修改分支名称,不指定原名称默认当前分支[m修改, M强制修改]
    git branch -m [原分支名称] 《新分支名称》
    git branch -M [原分支名称] 《新分支名称》
    
    删除分支  d删除   D强制删除
    git branch -d 《分支名称》
    
    git branch  -D  《分支名称》
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    git checkout ( 创建)切换分支

    主要用于切换分支,如果加上-d,–orphan则会创建分支再切换

    切换到已经存在的分支
    git checkout 《分支》
    
    创建并切换到指定分支, -d会创建并保留提交记录,--orphan会创建删除
    git checkout -b《分支名称》
    
    git checkout --orphan 《分支名称》
    
    
    替换本地改动新增的文件和已经到暂存区index的不受影响
    git checkout 《文件路径》
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    git cherry-pik 《commit ID》 已经提交记录合并到当前分支

    该命令相当于将某个提交push到当前分支进行合并

    git add 提交文件到暂存区

    将文件改动由工作区提交到暂存区

    将指定文件添加到暂存区
    git add 《文件路径》
    
    添加所有修改、已经删除的文件到暂存区
    git add -u 《文件路径》  / --update
    
    添加所有的修改,删除,新增 到暂存区
    git add .
    git add -A 《文件路径》 / --all
    
    查看所有修改、已删除,但是没有提交【暂存区】 进入子命令系统
    git add -i 《文件路径》 / --interactive
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    git commit 暂存区的文件提交到本地仓库

    将文件由暂存区提交都本地仓库

    提交到本地仓库,会调编辑器来书写本次commit信息
    git commit
    
    提交并添加描述
    git commit  -m "描述"
    
    把所有的修改删除文件体提交,,不包括不被版本库跟踪的文件
    git commit -a -m "描述"
    
    修改上次提交的描述信息
    git commit --amend
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    git fetch 将远程仓库获取最新版本拉取到本地

    git fetch和git pull类似

    拉取远程仓库所有的分支最新版本到本地
    git fetch  《远程仓库别名》
    
    指定分支
    git fetch  《远程仓库别名》 《分支》
    
    • 1
    • 2
    • 3
    • 4
    • 5

    git merge 《分支名称》 指定分支合并到当前分支

    可以将指定分支内容合并到当前分支,比如微服务不同的微服务在不同的分支,最终merge为一个完整的项目

    git diff 比较版本差异

    比较当前文件和暂存区的差异,显示没有暂存的更改
    git diff
    
    可以比较暂存区文件和上次提交的差异  --cached和--staged
    git diff  --cached
    git diff --staged
    
    比较当前文件和上次提交差异
    git diff HEAD 
    
    查看从指定版本后的改动,比较差异
    git diff 《commit ID》
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    git pull 拉取远程最新版本到本地

    git pull 类似git fetch;可以当作git fetch的功能使用

    从远程仓库拉取最新版本并且合并所有分支后到本地相当于git fetch和git merge
    git pull
    
    拉取远程仓库指定分支的最新版本到本地,和git fetch功能相同
    git   pull  《远程仓库别名》 《分支》   eg: git pull origin master
    
    • 1
    • 2
    • 3
    • 4
    • 5

    git push 将本地仓库的commit推送到远程仓库

    推送的时候可以指定远程仓库的别名和远程仓库的分支 【可以多个远程仓库】【多个分支】

    git push 《远程仓库别名》 《分支》   git  push origin master  推送到origin仓库的master分支
    
    删除指定的远程仓库分支
    git push 《远程仓库别名》:《分支》
    git push  《远程仓库别名》 --delete 《分支》
    
    • 1
    • 2
    • 3
    • 4
    • 5

    git log 显示提交记录

    可以使用该命令显示所有的提交

    打印所有的提交
    git log  
    
    打印从第一次到指定ID的提交
    git log 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    git reset 还原提交记录【版本回退】

    还原提交记录,版本回退

    重置暂存区,文件不受影响,不指定默认当前ID
    git reset 《文件路径》
    
    将HEAD的指向改变,撤销到指定的提交记录,文件不受影响
    git reset 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    git revert 《commit ID》 生成一个新的提交撤销某次提交

    此前提交之前的所有提交都会保留

    git tag 操作标签

    显示所有的标签
    git tag
    添加标签 ,可以指定之前的提交记录
    git tag 《标签名称》[提交ID]
    切换到指定标签
    git checkout  《标签名称》
    
    删除 -d , 查看show   提交标签push  所有的-tags
    git show《标签名称》
    git  tag -d 《标签名称》
    git push 《远程仓库别名》 《标签名称》
    git push  《远程仓库别名》 -tags
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    git mv 《源文件》 《目标文件》 重命名文件

    重命名指定文件或者文件夹

    git rm 删除文件或者文件夹

    移除跟踪指定文件,从本地仓库文件夹删除
    git rm 《文件路径》
    
    git rm -r 《文件路径》     删除
    
    git rm --cached  在本地仓库中保留该文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Git快速实践 – 提交本地代码到Remote仓库

    代码的流向: work space —> index --> repository --> remote

    首先初始化项目所在目录作为本地仓库
    git init 
    
    建立本地仓库的远程仓库,一般建立的别名都是origin,简单项目只有master分支
    git remote add origin master
    
    查看当前工作区的修改目录
    git status
    
    将所有的修改目录提交到暂存区
    git add . 
    
    将修改从暂存区提交到本地的仓库
    git  commit   -m "message"
    
    如果是第一次提交,先拉取remote的master分支最新的版本到本地【fetch】,pull更好
    git pull  origin master
    
    将所有的修改从本地仓库提交到remote仓库
    git push  origin master   【提交到master分支】
    
    ---------------------------版本管理,回退版本------------------------------
    首先可以通过查看提交日志
    git  log
    还可以git reflog查看
    
    之后选择CommitID回退
    git  reset --hard   'CommitID'
    
    ---------------------------分支控制--------------------------
    项目分为不同的branch,最后需要合并
    git merge  分支      将分支合并到当前分支
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    CentOS7搭建java环境

    这个主要涉及的部分就是项目的打包部署到服务器,如果发行版使用的Centos7,里面是自带不完整的jdk的,不管是基于Docker部署,还是直接在服务器上运行,都需要灵活掌握环境搭建的技术,这里就以java为例review一次

    1. 首先需要查看系统是否自带openjdk,如果有,则卸载
    [root@localhost ~]# java -version
    openjdk version "1.8.0_262"
    OpenJDK Runtime Environment (build 1.8.0_262-b10)
    OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
    
    • 1
    • 2
    • 3
    • 4

    说明自带了jdk,需要卸载这个不完整的jdk

    之后查找相关的文件并且删除:rpm -qa|grep java rpm -e nodeps XXX

    pcsc-lite-libs-1.8.8-8.el7.x86_64
    [root@localhost ~]# clear
    [root@localhost ~]# rpm -qa|grep java
    java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
    python-javapackages-3.4.1-11.el7.noarch
    tzdata-java-2020a-1.el7.noarch
    java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
    java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
    javapackages-tools-3.4.1-11.el7.noarch
    java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
    [root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
    [root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
    [root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
    [root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
    [root@localhost ~]# rpm -qa|grep java
    python-javapackages-3.4.1-11.el7.noarch
    tzdata-java-2020a-1.el7.noarch
    javapackages-tools-3.4.1-11.el7.noarch
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在usr/local下面创建java文件夹,将下载的tar传入到该文件夹下加压后删除压缩包

    使用xftp传输即可,协议使用SFTP,因为端口的占用问题

    cd  /usr/local
    mkdir java
    cd java
    [root@localhost java]# ls
    jdk1.8.0_251  jdk-8u251-linux-x64.tar.gz
    [root@localhost java]# rm -f jdk-8u251-linux-x64.tar.gz 
    [root@localhost java]# ls
    jdk1.8.0_251
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    接下来配置环境变量即可,Linux系统中环境变量在==/etc/profile==中设置【spring boot项目和maven都有profile,windows的环境变量通过%XX%引用】

    vim /etc/profile
    
    export JAVA_HOME=/usr/local/java/jdk1.8.0_251
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5

    之后source /etc/profile保存配置使之生效就完成了Centos的java环境配置

    [root@localhost java]# rm -f jdk-17.0.2_linux-x64_bin.tar.gz 
    [root@localhost java]# ls
    jdk-17.0.2
    [root@localhost java]# vim /etc/profile
    [root@localhost java]# source /etc/profile
    [root@localhost java]# java -version
    java version "17.0.2" 2022-01-18 LTS
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这里因为we构建项目使用的java17,部署到 服务器发生错误,jdk1.8不能满足要求,因此重新在Java Archive Downloads - Java SE 17 (oracle.com) 下载了jdk17 Linux版本,重新上述流程,只需要修改JAVA_HOME环境变量即可

    [root@localhost cfeng]# java -jar cfeng-test-demo-0.0.1-SNAPSHOT.jar 
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v2.7.2)
    
    2022-07-31 10:07:08.935  INFO 4001 --- [           main] com.Jning.cfengtestdemo.DemoApplication  : Starting DemoApplication v0.0.1-SNAPSHOT using Java 17.0.2 on localhost.localdomain with PID 4001 (/root/cfeng/cfeng-test-demo-0.0.1-SNAPSHOT.jar started by root in /root/cfeng)
    2022-07-31 15:16:13.588  INFO 8158 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
    2022-07-31 15:16:14.340  INFO 8158 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 1 endpoint(s) beneath base path '/actuator'
    2022-07-31 15:16:14.472  INFO 8158 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
    2022-07-31 15:16:14.523  INFO 8158 --- [           main] com.Jning.cfengtestdemo.DemoApplication  : Started DemoApplication in 18.263 seconds (JVM running for 21.615)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    这样就可以运行java17构建的springBoot项目;这样打包为jar就可以放到服务器上面运行

    CentOS7搭建MySQL8环境

    服务器除了jdk环境,还有就是最基本的mysql环境,才能正常运行jar类型的web项目

    • 首先要卸载centos的开源的数据库MariaDB,因为会冲突
    rpm -qa | grep mariadb
    rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
    
    • 1
    • 2
    https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
    
    • 1

    直接下载下来之后使用XFTP传到/usr/local/mysql文件夹下面

    • 解压安装,卸载安装包,重命名文件夹
    [root@localhost mysql]# ls
    mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
    [root@localhost mysql]# tar -Jxvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz 
    mysql-8.0.27-linux-glibc2.12-x86_64/bin/
    [root@localhost mysql]# ls
    mysql-8.0.27-linux-glibc2.12-x86_64  mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
    [root@localhost mysql]# rm -f mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
    [root@localhost mysql]# mv mysql-8.0.27-linux-glibc2.12-x86_64  mysql8
    [root@localhost mysql]# ls
    mysql8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 接下来就是配置环境变量【和windows一样都是为了任意位置使用mysql指令,配置PATH即可】
    [root@localhost bin]# pwd
    /usr/local/mysql/mysql8/bin
    [root@localhost bin]# vim /etc/profile
    [root@localhost bin]# source /etc/profile
    
    直接在PATH配置的JAVA后面   :XXXX
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    退出到~目录,执行mysql --version查看环境变量是否配置成功

    [root@localhost ~]# mysql --version
    mysql  Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)
    
    • 1
    • 2
    • 创建存放数据的文件夹
    [root@localhost mysql8]# mkdir data
    [root@localhost mysql8]# ls
    bin  data  docs  include  lib  LICENSE  man  README  share  support-files
    
    • 1
    • 2
    • 3
    • 创建操作用户组mysql,和mysql组用户cfeng,并给cfeng授权; 整个mysql8文件夹的属主; 利用chown改变属主,chgrp改变属组
    [root@localhost mysql8]# groupadd mysql
    [root@localhost mysql8]# useradd -g mysql cfeng
    useradd:用户“cfeng”已存在
    [root@localhost mysql8]# useradd -g mysql mysqlCfeng
    [root@localhost mysql8]# id mysqlCfeng
    uid=1001(mysqlCfeng) gid=1001(mysql)=1001(mysql)
    [root@localhost mysql8]# chown -R mysqlCfeng /usr/local/mysql/mysql8
    [root@localhost mysql8]# cd ..
    [root@localhost mysql]# ll
    总用量 0
    drwxr-xr-x 10 mysqlCfeng root 141 731 11:39 mysql8
    [root@localhost mysql]# chgrp mysql /usr/local/mysql/mysql8
    [root@localhost mysql]# ll
    总用量 0
    drwxr-xr-x 10 mysqlCfeng mysql 141 731 11:39 mysql8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 在/usr/local/etc下面创建myMysql.conf用于创建初始的配置,指定相关内容:安装目录,数据目录等
    vim /usr/local/etc/myMysql.conf
    
    数据目录      : /usr/local/mysql/mysql8/data  [login-bin----/data/mysql-bin  ]
    安装server目录:/usr/local/mysql/mysql8 
    
    [root@localhost mysql8]# cat /usr/local/etc/myMysql.conf 
    [mysql]
    default-character-set=utf8mb4
    [client]
    port       = 3306
    socket     = /tmp/mysql.sock
    [mysqld]
    port       = 3306
    server-id  = 3306
    user       = mysqlCfeng
    socket     = /tmp/mysql.sock
    # 安装目录
    basedir    = /usr/local/mysql/mysql8
    # 数据存放目录
    datadir    = /usr/local/mysql/mysql8/data
    log-bin    = /usr/local/mysql/mysql8/data/mysql-bin
    innodb_data_home_dir      =/usr/local/mysql/mysql8/data
    innodb_log_group_home_dir =/usr/local/mysql/mysql8/data
    # 日志及进程数据的存放目录
    log-error =/usr/local/mysql/mysql8/data/mysql.log
    pid-file  =/usr/local/mysql/mysql8/data/mysql.pid
    # 服务端字符集
    character-set-server=utf8mb4
    lower_case_table_names=1
    autocommit =1
    ##### 配置相关的数据量
    skip-external-locking
    key_buffer_size = 256M
    max_allowed_packet = 1M
    table_open_cache = 1024
    sort_buffer_size = 4M
    net_buffer_length = 8K
    read_buffer_size = 4M
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 64M
    thread_cache_size = 128
    #query_cache_size = 128M
    tmp_table_size = 128M
    explicit_defaults_for_timestamp = true
    max_connections = 500
    max_connect_errors = 100
    open_files_limit = 65535
    binlog_format=mixed
    binlog_expire_logs_seconds =864000
    # 创建表时使用的默认存储引擎
    default_storage_engine = InnoDB
    innodb_data_file_path = ibdata1:10M:autoextend
    innodb_buffer_pool_size = 1024M
    innodb_log_file_size = 256M
    innodb_log_buffer_size = 8M
    innodb_flush_log_at_trx_commit = 1
    innodb_lock_wait_timeout = 50
    transaction-isolation=READ-COMMITTED
    [mysqldump]
    quick
    max_allowed_packet = 16M
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 4M
    read_buffer = 2M
    write_buffer = 2M
    [mysqlhotcopy]
    interactive-timeout
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 初始化数据库, 使用mysqld命令初始化
    mysqld --defaults-file=/usr/local/etc/myMysql.conf --basedir=/usr/local/mysql/mysql8 --datadir=/usr/local/mysql/mysql8/data --user=mysqlCfeng --initialize-insecure
    
    • 1
    • –defaults-file: 指定配置文件,必须在initialize前面
    • –user: 指定用户
    • –basedir: 安装目录
    • –datadir: 指定初始化数据目录
    • –initialize-insevure: 初始化无密码【否则会生成随机密码】

    初始化之后,启动mysql,先查看/bin下面是否包含命令mysqld_safe

    之后安全启动后台服务【&】 启动的方式和mysql相同,指定配置文件,同时指定后台启动

    [root@localhost bin]# ls
    ibd2sdi         my_print_defaults    mysqld         mysql_migrate_keyring      mysql_upgrade
    innochecksum    mysql                mysqld-debug   mysqlpump                  perror
    lz4_decompress  mysqladmin           mysqld_multi   mysql_secure_installation  zlib_decompress
    myisamchk       mysqlbinlog          mysqld_safe    mysqlshow
    myisam_ftdump   mysqlcheck           mysqldump      mysqlslap
    myisamlog       mysql_config         mysqldumpslow  mysql_ssl_rsa_setup
    myisampack      mysql_config_editor  mysqlimport    mysql_tzinfo_to_sql
    [root@localhost bin]# mysqld_safe --defaults-file=/usr/local/etc/myMysql.conf &
    [1] 6064
    [root@localhost bin]# 2022-07-31T05:07:17.818091Z mysqld_safe Logging to '/usr/local/mysql/mysql8/data/mysql.log'.
    2022-07-31T05:07:17.852992Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/mysql8/data
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    可以看到自动执行命令将登录日志写入mysql.log,将databases数据来源data

    • 登录时如果没有使用–initialize-insecure初始化,首次登录跳过密码
    mysql -u root --skip-password
    
    • 1

    首次登录修改密码:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXX'
    FLUSH PRIVILEGES
    
    • 1
    • 2

    平时修改:

    mysqladmin -u命令行   -p旧密码  password 新密码
    
    SET PASSWORD FOR '用户名'@'主机' = PASSWORD
    FLUSH PRIVILEGES
    
    • 1
    • 2
    • 3
    • 4

    退出服务可以使用quit,exit

    修改root的主机信息,为远程登录【创建之后授权GRANT】

    mysql> USE mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> SELECT user,host FROM user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    4 rows in set (0.00 sec)
    整个表就是系统的用户
    
    创建一个可以远程登录的用户
    mysql> CREATE user 'cfeng'@'%';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> ALTER USER 'cfeng'@'%' IDENTIFIED WITH mysql_native_password BY 'XXXXX';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'cfeng'@'%';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> SELECT user,host FROM user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | cfeng            | %         |
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    5 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    %就是匹配所有的IP,类似于之前的redis的0.0.0.0

    关闭防火墙之后就可以连接了【i的防火墙自redis后就没关过,stop即可】

    在其他电脑上远程连接

    C:\Users\OMEY-PC>mysql -h 192.168.204.100 -u cfeng -p
    Enter password: ************
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 9
    Server version: 8.0.27 MySQL Community Server - GPL
    
    Copyright (c) 2000, 2021, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    mysql> USE mysql;
    Database changed
    mysql> SELECT user,host FROM user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | cfeng            | %         |
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    5 rows in set (0.00 sec)
    
    同时本机也可以以localhost登录
    
    mysql> USE cfengtest
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> SHOW TABLES;
    +---------------------+
    | Tables_in_cfengtest |
    +---------------------+
    | hibernate_sequence  |
    | test_user           |
    +---------------------+
    2 rows in set (0.01 sec)
    
    mysql> SELECT * FROM test_user;
    +----+----------+------------+-----------+----------+
    | id | user_age | user_class | user_name | user_pwd |
    +----+----------+------------+-----------+----------+
    |  1 |       12 | HC2005     | Cfeng     | 123456  |
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    只要对应的主机上也有mysql环境,可以访问server即可

    设置服务器Mysql开机自启动,首先需要设置systectl管理mysql的配置文件

    touch /usr/lib/systemd/system/mysql.service
    
    • 1

    这里的文件必须是.service结尾

    进入配置文件中配置

    [root@localhost system]# touch mysql.service
    [root@localhost system]# vim mysql.service 
    [root@localhost system]# cat mysql.service 
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    User=mysqlCfeng
    Group=mysql
    ExecStart=/usr/local/mysql/mysql8/bin/mysqld_safe --defaults-file=/usr/local/etc/myMysql.conf 
    LimitNOFILE = 5000
    #Restart=on-failure
    #RestartPreventExitStatus=1
    #PrivateTmp=false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    ExeStart标识systemctl启动mysql时要执行的命令

    这个时候就可以利用systemctl管理mysql

    systemctl start mysql   #启动
    
    systemctl enable mysql #开机自启动
    
    [root@localhost ~]# systemctl enable mysql
    Created symlink from /etc/systemd/system/multi-user.target.wants/mysql.service to /usr/lib/systemd/system/mysql.service.
    [root@localhost ~]# systemctl status mysql;
    ● mysql.service - MySQL Server
       Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; vendor preset: disabled)
       Active: active (running) since 日 2022-07-31 17:32:14 CST; 3min 30s ago
         Docs: man:mysqld(8)
               http://dev.mysql.com/doc/refman/en/using-systemd.html
     Main PID: 1154 (mysqld_safe)
        Tasks: 42
       Memory: 572.9M
       CGroup: /system.slice/mysql.service
               ├─1154 /bin/sh /usr/local/mysql/mysql8/bin/mysqld_safe --defaults-...
               └─1841 /usr/local/mysql/mysql8/bin/mysqld --defaults-file=/usr/loc...
    
    731 17:32:14 localhost.localdomain systemd[1]: Started MySQL Server.
    731 17:32:15 localhost.localdomain mysqld_safe[1154]: 2022-07-31T09:32:15...
    731 17:32:15 localhost.localdomain mysqld_safe[1154]: 2022-07-31T09:32:15...
    Hint: Some lines were ellipsized, use -l to show in full.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    再将上面的项目的数据库连接改为服务器的数据库,运行即可

    [root@localhost ~]# ps -ef| grep test-demo
    root       8158   2837 29 15:15 pts/0    00:00:48 java -jar cfeng-test-demo-0.0.1-SNAPSHOT.jars
    
    • 1
    • 2

    在虚拟机和主机上都可以访问网站,success🥂

  • 相关阅读:
    【Java面向对象】封装的认识与实现
    web前端之零碎知识点、字符串、数组、基础知识
    【VSCode】代码高亮的调整
    C++ 的int*p[]和int(*p)[]的区别
    SQL[游标+动态SQL+表函数]返回指定表名的某行的所有列合并后的值,主要提供给数据库表的更新记录事件
    大数据调度最佳实践 | 从Airflow迁移到Apache DolphinScheduler
    【torch】如何把给定mask按比例选取再次划分mask?
    22年BATJ大厂必问面试题(复盘):JVM+微服务+多线程+锁+高并发
    【Spring进阶系列丨最终篇】一文详解Spring中的事务控制
    静态代理和动态代理笔记
  • 原文地址:https://blog.csdn.net/a23452/article/details/126118803