MySQL安装和初始化

Yaurora

MySQL安装、卸载,以及密码初始化流程

Ubuntu下相关操作

卸载MySQL

1
2
3
4
5
6
7
8
## 若有必要,可以先备份相关数据
# 删除MySQL包和相关配置文件
$ sudo apt purge mysql-*
# 删除MySQL相关配置文件和数据文件(日志文件上一步已经删除了)
$ sudo rm -rf /etc/mysql /var/lib/mysql*
# 自动移除没有被依赖的包
$ sudo apt autoremove
$ sudo apt autoclean

安装最新版本

1
$ sudo apt install mysql-server

初始登陆

  • root用户下可以直接输入mysql命令,非root用户数据sudo mysql
  • 可以查看/etc/mysql/debian.cnf文件,使用debian-sys-maint这个帐号登陆

了解

配置文件路径: /etc/mysql/my.cnf

​ 关于参数修改,可能会修改 /etc/mysql/mysql.conf.d/mysqld.cnf,my.cnf加载了这个文件

数据存储路径: /var/lib/mysql

日志存储路径: /var/log/mysql

Centos下相关操作

卸载Mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查找mariadb并卸载
$ sudo rpm -qa | grep -i mariadb
mariadb-libs-5.5.68-1.el7.x86_64
mariadb-5.5.68-1.el7.x86_64
mariadb-devel-5.5.68-1.el7.x86_64

$ sudo rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 mariadb-5.5.68-1.el7.x86_64 mariadb-devel-5.5.68-1.el7.x86_64

# 查找mysql并卸载
$ sudo rpm -qa | grep -i mysql
mysql-community-client-plugins-8.0.31-1.el7.x86_64
mysql-community-icu-data-files-8.0.31-1.el7.x86_64
mysql-community-server-8.0.31-1.el7.x86_64
mysql-community-common-8.0.31-1.el7.x86_64
mysql-community-libs-8.0.31-1.el7.x86_64
mysql-community-client-8.0.31-1.el7.x86_64

$ sudo rpm -qa | grep -i mysql | xargs sudo rpm -e --nodeps
$ sudo find / -name mysql | xargs sudo rm -rf
$ sudo rm -rf /etc/my.cnf

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 先检查临时目录权限
$ sudo chmod 777 /tmp
## 检查依赖
$ rpm -qa | grep libaio
$ rpm -qa | grep net-tools
## 去官网下载最新版本
$ wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
## 解压
$ tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar

## 按照如下顺序安装
## 公共包
$ sudo rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm
## 客户端
$ sudo rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm
$ sudo rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm
$ sudo rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm

$ sudo rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
$ sudo rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm

修改数据库目录所有者

1
$ sudo mysqld --initialize --user=mysql

启动服务

1
$ sudo systemctl start mysqld

初始登陆

查看root初始密码

1
$ sudo cat /var/log/mysqld.log | grep password

修改初始密码

1
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passsword';

注意

在ubuntu下,不能使用mysql> ALTER USER USER() IDENTIFIED BY 'new_passsword';,会报错

在centos下,初始密码不能过于简单,必须是数字字母和符号的集合,ubuntu下没有要求

而且很奇怪,两个同样的版本,为什么关于校验的参数会不一样

image-20230320191653202

image-20230320191524696

可能后面会统一吧

忘记密码?

忘记密码,不用慌,我们可以重置密码。这一步,主要是用到mysqld的跳过授权表skip-grant-tables这个选项

  • 第一步, 编辑配置文件/etc/mysql/mysql.conf.d/mysqld.cnf或者/etc/my.cnf

    添加如下配置

    image-20230320193240661

  • 第二步,重启mysql服务

    1
    2
    3
    4
    # ubuntu下
    $ sudo systemctl restart mysql
    # centos下
    $ sudo systemctl restart mysqld
  • 第三步,登陆,修改密码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 直接使用mysql, 可能登陆
    $ mysql

    # 登陆后刷新授权表
    mysql> flush privileges;
    # 更改密码
    mysql> alter user 'root'@'localhost' identified by 'new_password';
    # 再次刷新刷新授权表
    mysql> flush privileges;
    # 退出
    mysql> exit

    到目前为止,已经可以使用重置后的密码进行登录了

  • 第四步,还原配置文件。

    还原配置文件后,可以重启,也可以不重启,因为授权表已经刷新到内存了

  • 第五步, 检查端口是否异常

    这一步,我被坑了,后面我无法通过远程的方式连接mysql, 搜索了很多,发现和skip_networking 有关。

    This variable controls whether the server permits TCP/IP connections. By default, it is disabled (permit TCP connections)

    官方说这个参数是用来控制服务器是能通过TCP/IP连接, 默认是OFF,也就是允许连接

    Because starting the server with --skip-grant-tables disables authentication checks, the server also disables remote connections in that case by enabling skip_networking.

    导致这个问题的原因是因为我们使用了skip-grant-tables这个参数,服务器就自动开启了跳过网络参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 问题查看
    mysql> show variables like 'port';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | port | 0 |
    +---------------+-------+

    mysql> show variables like 'skip_networking';
    +-----------------+-------+
    | Variable_name | Value |
    +-----------------+-------+
    | skip_networking | ON |
    +-----------------+-------+

    解决方式

    将配置文件中的参数port=3306重新启用,然后重启mysql服务即可。

  • 标题: MySQL安装和初始化
  • 作者: Yaurora
  • 创建于 : 2023-03-19 11:00:00
  • 更新于 : 2023-03-22 00:02:54
  • 链接: https://jingyu.life/2023/03/19/db/mysql/install&init/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。