说明

  • 命令行安装以Ubuntu为例(WSL环境下)
  • 编译安装以centos为例
  • 为了选择特定版本及多版本使用,推荐源码编译安装
  • 待完成
    • MySQL远程登录
    • Ubuntu编译安装
    • 多版本切换:估计是在源码编译安装中设置my.cnf之后的步骤重做
    • 添加链接:servicesystemd

步骤

命令行安装

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
# 通过源安装MySQL
sudo apt install mysql-server
# 查看状态并启动(重启)
sudo service mysql status
sudo service mysql restart
# 读取默认账密
sudo cat /etc/mysql/debian.cnf
### debian.cnf文件内容
[client]
host = localhost
user = debian-sys-maint
password = jnRrQlDQcIQzLDIL
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = jnRrQlDQcIQzLDIL
socket = /var/run/mysqld/mysqld.sock
### debian.cnf文件内容

# 登录
mysql -udebian-sys-maint -pjnRrQlDQcIQzLDIL
# 进入后修改账密
update mysql.user set authentication_string=password('1') where user ='root' and Host='localhost';
update mysql.user set plugin = 'mysql_native_password';
flush privileges;
# 使用新账密登录
mysql -uroot -p1
# 退出,查看版本
mysql --version

源码编译安装

  1. 下载相应安装包,wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.28-el7-x86_64.tar.gz, 此处使用清华镜像源

  2. 检查是否安装过MySQL

    1
    2
    3
    4
    5
    6
    7
    8
    ##### 查看是否有mysql依赖,为空则表示没有
    rpm -qa | grep mysql

    ##### 如果有就卸载,xxx表示查出来的依赖
    # 普通删除模式
    rpm -e xxx(mysql_libs)
    # 强力删除模式,如果上述命令删除时,提示有依赖其他文件,则可以用该命令对其进行强力删除
    rpm -e --nodeps xxx(mysql_libs)
  3. 检查是否有mariadbrpm -qa | grep mariadb, 有则卸载, 同MySQL卸载

  4. 安装MySQL依赖包:yum install libaio

  5. 解压到指定路径, sudo tar -zxvf mysql-8.0.28-el7-x86_64.tar.gz -C /opt

  6. 更名并移动至 /usr/local

    1
    2
    3
    cd /opt
    mv mysql-8.0.28-el7-x86_64 mysql
    mv /opt/mysql/ /usr/local/
  7. 创建数据库文件存放的文件夹。这个文件夹将来存放每个数据库的库文件

    1
    2
    cd /usr/local/mysql
    mkdir mysqldb
  8. MySQL安装目录赋予权限:chmod -R 777 /usr/local/mysql/

  9. 创建MySQL组和用户

    • 创建组:groupadd mysql
    • 创建用户: useradd -r -g mysql -s /bin/false mysql(-s /bin/false参数指定MySQL用户仅拥有所有权,而没有登录权限)
    • 将用户添加到组中: chown -R mysql:mysql ./
  10. 修改MySQL配置文件:vim /etc/my.cnf,如果没有文件就新建

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    [mysqld]
    # 设置3306端口
    port=3306
    # 设置mysql的安装目录
    basedir=/usr/local/mysql
    # 设置mysql数据库的数据的存放目录
    datadir=/usr/local/mysql/mysqldb
    # 允许最大连接数
    max_connections=10000
    # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
    max_connect_errors=10
    # 服务端使用的字符集默认为utf8mb4
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 默认使用“mysql_native_password”插件认证
    default_authentication_plugin=mysql_native_password
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8mb4
  11. 进入MySQL安装目录下,安装MySQL

    1
    2
    cd /usr/local/mysql/bin/
    ./bin/mysqld --initialize # 生成初始密码,见下图终端(记住,后面登录MySQL需要)

  12. 启动MySQL服务

    1
    2
    3
    4
    5
    cd /usr/local/mysql/support-files
    ./mysql.server start
    # 如果第一次启动,当初始化执行会有报错,加权限,再次执行
    chmod -R 777 /usr/local/mysql
    ./mysql.server start
  13. MySQL添加到系统进程中:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

  14. 设置MySQL自启动

    1
    2
    chmod +x /etc/init.d/mysqld
    systemctl enable mysqld
  15. 修改root用户登录密码

    1
    2
    3
    4
    cd /usr/local/mysql/bin/
    ./mysql -u root -p
    # 修改账户密码为:root:passwd
    alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'passwd';
  16. 全局使用MySQL,加环境变量,并生效

    1
    2
    3
    vim ~/.bashrc
    PATH=${PATH}:/usr/local/mysql/bin
    source ~/.bashrc
  17. 全局使用:mysql -uroot -p,输入密码即可使用

docker安装

  • 安装:docker pull mysql
  • 启动:docker run -d --name local-mysql -p 4561:3306 -e MYSQL_ROOT_PASSWORD=123 -e LANG=C.UTF-8 mysql
  • 进入容器:docker exec -it local-mysql /bin/bash

配置

参考

  1. Ubuntu18.04安装mysql
  2. Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功)