安装

MySQL最早是纯开源的软件,先是被SUN收购(2008年),后来SUN又被ORACLE并购(2009年),ORACLE是专门做商业数据库的,它收购MySQL的目的不言而喻。

MySQL版本:

  • MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。

  • MySQL Enterprise Edition 企业版本,需付费,可以试用30天。

  • MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。

  • MySQL Cluster CGE 高级集群版,需付费。

而Mariadb是MySQL的衍生品,是MySQL之父Michael Widenius自MySQL被ORACLE收购后基于MySQL起的一个新分支。

Mariadb和MySQL用起来没有多大区别,两者在核心框架基本一样,但在底层功能上有不少细微差异,而且随着版本迭代差异会越来越大。

查看MySQL和Mariadb版本兼容性

建议选择完全免费的开源社区版Mariadb。MySQL以后可能会收费,虽然目前还没有收费的计划。

MySQL安装

二进制包安装mysql8.0

Centos/Rocky/Ubuntu操作都一样

  1. 下载,太慢的话就手动下载并上传服务器

    cd  /usr/local
    
    sudo wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
    
  2. 解压

    sudo tar Jxf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
    
    sudo ln -s mysql-8.0.36-linux-glibc2.12-x86_64 mysql
    
  3. 创建用户

    sudo useradd -s /sbin/nologin  mysql
    
  4. 创建数据目录

    sudo mkdir -p /data/mysql
    
    sudo chown -R mysql:mysql /data/mysql
    

    数据目录尽量放在大的磁盘,性能更好的磁盘里,mysql对磁盘读写要求很高

  5. 定义基础配置文件

    $ sudo vim /etc/my.cnf
    # 客户端配置
    [mysql]
    port = 3306
    socket = /tmp/mysql.sock
    
    # 服务端配置
    [mysqld]
    user = mysql
    port = 3306
    basedir = /usr/local/mysql      # 程序存放路径
    datadir = /data/mysql           # 数据存放路径
    socket = /tmp/mysql.sock        # 本地连接socket,socket是linux进程间、程序间通信的一种方式
    pid-file = /data/mysql/mysqld.pid
    log-error = /data/mysql/mysql.err
    

    注:修改文件路径时,需要将已经生成过的文件移动到新指定的路径下,或者删除掉,不然重启服务会报错。

  6. 安装依赖

    # Rocky/Centos
    sudo yum install -y ncurses-devel libaio-devel
    
    # Ubuntu
    sudo  apt install  libaio-dev libtinfo5
    
  7. 初始化数据库

    /usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql
    

    initialize-insecure使用空密码

  8. 定义启动配置文件

    $ sudo vim /usr/lib/systemd/system/mysqld.service
    
    [Unit]
    Description=MYSQL server
    After=network.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    Type=forking
    TimeoutSec=0
    PermissionsStartOnly=true
    ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS
    ExecReload=/bin/kill -HUP -$MAINPID
    ExecStop=/bin/kill -QUIT $MAINPID
    KillMode=process
    LimitNOFILE=65535
    Restart=on-failure
    RestartSec=10
    RestartPreventExitStatus=1
    PrivateTmp=false
    
  9. 启动服务

    sudo systemctl daemon-reload
    sudo systemctl enable mysqld
    sudo systemctl start mysqld
    
  10. 配置环境变量

    sudo vim /etc/profile.d/mysql.sh
    export PATH=$PATH:/usr/local/mysql/bin
    
    #执行命令使其生效
    source /etc/profile.d/mysql.sh
    
  11. 登录数据库

    #初始化时使用空密码
    mysql -uroot -p
    
  12. 设置密码

    #登录数据库后操作
    alter user root@localhost identified by ‘密码’;
    
    #数据库外操作
    mysqladmin -uroot  password  '密码'