Linux实战——MySQL5.7和MySQL8.0分别在CentOS和Ubuntu中的安装配置过程

Posted 会不了一点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux实战——MySQL5.7和MySQL8.0分别在CentOS和Ubuntu中的安装配置过程相关的知识,希望对你有一定的参考价值。

Linux实战:部署各类软件

MySQL5.7版本在CentOS系统安装

安装(需要root权限或者sudo提权)

  1. 配置yum仓库

    # 更新密钥
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    
    # 安装Mysql yum库
    rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
    

    由于MySQL并不在CentOS的官方仓库中,所以我们通过上述rpm命令:

    • 导入MySQL仓库的密钥
    • 配置MySQLQ的yum仓库
  2. 使用yum安装MySQL

    # yum安装Mysql
    yum -y install mysql-community-server
    
  3. 安装完成后,启动MySQL并配置开机自启动

    systemctl start mysqld		# 启动
    systemctl enable mysqld		# 开机自启
    

    MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理

  4. 检查MySQL的运行状态

    systemctl status mysqld
    

配置

主要配置管理员用户root的密码以及配置允许远程登录的权限。

  1. 获取MySQL的初始密码

    # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
    cat /var/log/mysqld.log | grep "temporary password"
    

    【返回的结果中,…root@localhost:xxxxxx,这个xxxxxx即root密码】

  2. 登陆MySQL数据库系统

    # 执行
    mysql -uroot -p
    # 解释
    # -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
    # -p,表示使用密码登陆
    
    # 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
    
  3. 修改root用户密码

    # 在MySQL控制台内执行
    ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号
    
  4. [扩展],配置root的简单密码

    我们可以给root设置简单密码,如123456.

    请注意,此配置仅仅是用于测试环境或学习环境的MySQL,如果是正式使用,请勿设置简单密码

    # 如果你想设置简单密码,需要降低Mysql的密码安全级别
    set global validate_password_policy=LOW; # 密码安全级别低
    set global validate_password_length=4;	 # 密码长度最低4位即可
    
    # 然后就可以用简单密码了(这里使用简单密码,为了方便,生产中不要这样)
    ALTER USER 'root'@'localhost' IDENTIFIED BY '简单密码';
    
  5. [扩展],配置root运行远程登录

    默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登陆MySQL系统

    请注意,允许root远程登录会带来安全风险

    # 授权root远程登录
    grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;  
    # IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
    # 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同
    
    # 刷新权限,生效
    flush privileges;
    
  6. 退出MySQL控制台页面

    # 退出命令
    exit
    
    # 或者通过快捷键退出:ctrl + d
    
  7. 检查端口

    MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态

    netstat -anp | grep 3306
    

至此,MySQL就安装完成并可用了,请妥善保存好MySQL的root密码。

MySQL8.0版本在CentOS系统安装

安装

  1. 配置yum仓库

    # 更新密钥
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    
    # 安装Mysql8.x版本 yum库
    rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
    
  2. 使用yum安装MySQL

    # yum安装Mysql
    yum -y install mysql-community-server
    
  3. 安装完成后,启动MySQL并配置开机自启动

    systemctl start mysqld		# 启动
    systemctl enable mysqld		# 开机自启
    

    MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理

  4. 检查MySQL的运行状态

    systemctl status mysqld
    

配置

主要修改root密码和允许root远程登录

  1. 获取MySQL的初始密码

    # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
    grep 'temporary password' /var/log/mysqld.log
    
  2. 登录MySQL数据库系统

    # 执行
    mysql -uroot -p
    # 解释
    # -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root
    # -p,表示使用密码登陆
    
    # 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
    
  3. 修改root密码

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
    
  4. [扩展],配置root的简单密码

    我们可以给root设置简单密码,如123456.

    请注意,此配置仅仅是用于测试环境或学习环境的MySQL,如果是正式使用,请勿设置简单密码

    set global validate_password.policy=0;		# 密码安全级别低
    set global validate_password.length=4;		# 密码长度最低4位即可
    
  5. 允许root远程登录,并设置远程登录密码

    默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登陆MySQL系统

    请注意,允许root远程登录会带来安全风险

    # 第一次设置root远程登录,并配置远程密码使用如下SQL命令
    create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
    
    # 后续修改密码使用如下SQL命令
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
    
  6. 退出MySQL控制台页面

    # 退出命令
    exit
    
    # 或者通过快捷键退出:ctrl + d
    
  7. 检查端口

    MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态

    netstat -anp | grep 3306
    

至此,MySQL就安装完成并可用了,请妥善保存好MySQL的root密码。

MySQL5.7版本在Ubuntu(WSL环境)系统安装

安装操作需root权限,你可以:

  1. 通过 su,切换到root用户

  2. 或在每一个命令前,加上sudo,用来临时提升权限

安装

  1. 下载apt仓库文件

    # 下载apt仓库的安装包,Ubuntu的安装包是.deb文件
    wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
    

  2. 配置apt仓库

    # 使用dpkg命令安装仓库
    dpkg -i mysql-apt-config_0.8.12-1_all.deb
    

    弹出框中选择:ubuntu bionic (Ubuntu18.04系统的代号是bionic,选择18.04的版本库用来安装)

    弹出框中选择:MySQL Server & Cluster

    弹出框中选择:mysql-5.7

    最后选择:ok

  3. 更新apt仓库的信息

    # 首先导入仓库的密钥信息
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
    # 更新仓库信息
    apt update
    
  4. 检查是否成功配置MySQL5.7的仓库

    apt-cache policy mysql-server
    

    看到如图所示字样,即成功

  5. 安装MySQL5.7

    # 使用apt安装mysql客户端和mysql服务端
    apt install -f -y mysql-client=5.7* mysql-community-server=5.7*
    

    弹出框中输入root密码并选择ok,密码任意

    再次输入root密码确认

  6. 启动MySQL

    /etc/init.d/mysql start			# 启动
    /etc/init.d/mysql stop			# 停止
    /etc/init.d/mysql status		# 查看状态
    

  7. 对MySQL进行初始化

    # 执行如下命令,此命令是MySQL安装后自带的配置程序
    mysql_secure_installation
    # 可以通过which命令查看到这个自带程序所在的位置
    root@DESKTOP-Q89USRE:~# which mysql_secure_installation
    /usr/bin/mysql_secure_installation
    
    1. 输入密码:

    2. 是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需要直接回车(这里选择直接回车了)

    3. 是否更改root密码,需要输入y回车,不需要直接回车(这里选择直接回车了)

    4. 是否移除匿名用户,移除输入y回车,不移除直接回车(这里选择移除了)

    5. 是否进制root用户远程登录,禁止输入y回车,不禁止直接回车(这里选择直接回车了)

    6. 是否移除自带的测试数据库,移除输入y回车,不移除直接回车(这里选择直接回车了)

    7. 是否刷新权限,刷新输入y回车,不刷新直接回车(这里选择刷新了)

  8. 登陆MySQL

    mysql -uroot -p
    # 输入密码即可登陆成功
    

至此,在Ubuntu上安装MySQL5.7版本成功。

MySQL8.0版本在Ubuntu(WSL环境)系统安装

最新的Ubuntu22.04版本,这个版本的软件商店内置的MySQL是8.0版本

所以直接可以通过apt安装即可

安装操作需root权限,你可以:

  1. 通过 su,切换到root用户

  2. 或在每一个命令前,加上sudo,用来临时提升权限

安装

  1. 如果已经安装过MySQL5.7版本,需要卸载仓库信息哦

    # 卸载MySQL5.7版本
    apt remove -y mysql-client=5.7* mysql-community-server=5.7*
    
    # 卸载5.7的仓库信息
    dpkg -l | grep mysql | awk 'print $2' | xargs dpkg -P
    
  2. 更新apt仓库信息

    apt update
    
  3. 安装mysql

    apt install -y mysql-server
    
  4. 启动MySQL

    /etc/init.d/mysql start			# 启动
    /etc/init.d/mysql stop			# 停止
    /etc/init.d/mysql status		# 查看状态
    
  5. 登陆MySQL设置密码

    # 直接执行:mysql
    mysql
    
  6. 设置密码

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    
  7. 退出MySQL控制台

    exit
    
  8. 对MySQL进行初始化

    # 执行如下命令,此命令是MySQL安装后自带的配置程序
    mysql_secure_installation
    # 可以通过which命令查看到这个自带程序所在的位置
    root@DESKTOP-Q89USRE:~# which mysql_secure_installation
    /usr/bin/mysql_secure_installation
    
    1. 输入密码:

    2. 是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需要直接回车(这里选择直接回车)

    3. 是否更改root密码,需要输入y回车,不需要直接回车(这里选择直接回车)

    4. 是否移除匿名用户,移除输入y回车,不移除直接回车(这里选择移除)

    5. 是否进制root用户远程登录,禁止输入y回车,不禁止直接回车(这里选择直接回车)

    6. 是否移除自带的测试数据库,移除输入y回车,不移除直接回车(这里选择直接回车)

    7. 是否刷新权限,刷新输入y回车,不刷新直接回车(这里选择刷新)

  9. 重新登陆MySQL(用更改后的密码)

    mysql -uroot -p
    

至此,在Ubuntu上安装MySQL5.7版本成功。

Linux安装下载mysql8.0版本实战详细教程

Linux安装下载mysql8.0版本实战详细教程

1.进入 /usr/local下,根据需要的版本下载mysql:wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-el7-x86_64.tar.gz,不通版本修改命令里的版本号

没有wget命令的可以安装此命令 sudo yum -y install wget

也可以下载完自己上传到linux里面

2.解压下载的包,tar zxvf mysql-8.0.30-el7-x86_64.tar.gz,解压完成后将文件夹重命名为 mysql(为了好看)

3.进入mysql文件夹,创建data文件夹用来存储文件

4.创建用户组以及用户和密码
groupadd mysql
useradd -g mysql mysql

用户组名以及用户名和密码为了方便记都用mysql就行,当然也可以自己叫什么都行

5.授权刚刚创建的 mysql 用户组对mysql文件夹的操作权限
chown -R mysql.mysql /usr/local/mysql
chmod 777 /usr/local/mysql/mysql/data

6.编辑 my.cnf 文件
vi /etc/my.cnf 或者 vim /etc/my.cnf (编辑命令的使用不用说了吧)
下面的配置为了防止出错,就按照这个写吧
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
socket=/tmp/mysql.sock
character-set-server=UTF8MB4
lower_case_table_names=1(:设置数据库表名大小写不敏感,如果想要区分大小写,这个不加,默认是0,所以不用加)
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’(:MySQL8.0 配置中 sql_mode 配置了 only_full_group,需要 GROUP BY中包含所有 在 SELECT 中出现的字段。因此需要在 MySQL 的配置中去掉这个配置)

7.保存后,进入mysql的bin目录下,执行下面命令
./mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lower-case-table-names=1 --initialize

其中 --lower-case-table-names=1 这个参数依然根据是否需要数据库表名大小写敏感设置成 0 或者 1,默认是0,
区分大小写的话这个就删除掉不用加就行
成功后显示如下

这个随机密码不用记,记住也没有用

8.复制 mysql.server 文件,添加mysql 和 mysqld服务
注意,此时在mysql目录下
cp -a ./support-files/mysql.server /etc/init.d/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
复制完后赋予权限:
chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

9.启动mysql
service mysql start
见到如下表示启动成功

10.添加软连接命令
ln -s /usr/local/mysql/bin/mysql /usr/bin

11.登录mysql
mysql -uroot -p
此时输入密码你会发现怎么都不对,即使你确定你输对了之前生成的随机密码

这就是说的前面生成的那个初始密码根本没用的原因,解决如下:
编辑my.cnf文件
vi /etc/my.cnf
在文件中随便一行加入 skip-grant-tables,这行在之前的贴图中用#号注释着的,用途就是为了这里,
保存后重启mysql:service mysql restart
再次 mysql -uroot -p 登录mysql ,直接敲两次回车,密码已经被跳过了,看到如下

此时已经登录进来了
输入命令 use mysql

使用命令清空之前的密码设置
update user set authentication_string = ‘’ where user = ‘root’;

此时密码已被清空,quit退出mysql
将之前my.cnf文件中添加的跳过密码配置删掉,保存后service mysql restart重启mysql,然后mysql -uroot -p敲两次回车登录mysql,
因为密码已经被清空了,所以这里依然不用输入密码
进去后重新修改密码
输入use mysql命令
输入修改密码命令 ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘12345678’;

输入刷新权限命令 flush privileges;

接着输入命令配置可以远程连接到此数据库:update user set host=‘%’ where user=‘root’;
并刷新权限

接着可以用Navicat尝试连接一下了

以上是关于Linux实战——MySQL5.7和MySQL8.0分别在CentOS和Ubuntu中的安装配置过程的主要内容,如果未能解决你的问题,请参考以下文章

数据库学习笔记第一弹——MySQL8.0和MySQL5.7的下载安装与配置(图文详解步骤2022)

数据库学习笔记第一弹——MySQL8.0和MySQL5.7的下载安装与配置(图文详解步骤2022)

在docker上安装MySQL和Redis

mysql5.7 换mysql8

编译安装MySQL8.0

一键安装mysql5.7和mysql8.0二进制包的脚本