Mysql是开发的必备工具和技能,本文手把手教你如何在Linux系统上安装Mysql。

下载mysql软件包

下载链接:https://dev.mysql.com/downloads/mysql/

我们选择 5.7.20 版本,这里按照需求自行选择:
image.png
找到 64 位安装包,点击下载:
image.png

安装软件包

一般习惯安装在 /usr/local 目录下

  • 解压tar包

    1. # -C 指定安装目录
    2. tar zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
    3. # 改名
    4. mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql-5.7.20
  • 添加用户组和用户

    #添加用户组
    groupadd mysql
    #添加用户mysql 到用户组mysql
    useradd -g mysql mysql
    
  • 创建日志目录

    mkdir /var/log/mariadb 
    touch /var/log/mariadb/mariadb.log
    chown -R mysql:mysql /var/log/mariadb/ 
    mkdir /var/run/mariadb 
    chown -R mysql:mysql /var/run/mariadb/
    
  • 创建数据目录

    cd /usr/local/mysql-5.7.20
    mkdir -p ./data/mysql
    
  • 更改用户和组

    chown -R mysql:mysql /usr/local/mysql-5.7.20
    
  • 安装和初始化数据库

    ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.20  --datadir=/usr/local/mysql-5.7.20/data/mysql
    

    如果执行报下面错误: image.png 解决方案:MySQL依赖于libaio 库,需要安装libaio。 执行:yum install libaio -y 然后再执行上面的命令

看到下面输出说明安装/初始化数据库成功!
image.png

上面圈的是root用户的临时密码

  • 添加到MySQL启动脚本到系统服务

    cp support-files/mysql.server /etc/init.d/mysqld
    chmod 755 /etc/init.d/mysqld
    

    这样系统启动后,会自动启动mysql服务。

  • 修改配置

    # 修改 /etc/init.d/mysqld
    basedir=/usr/local/mysql-5.7.20
    datadir=/usr/local/mysql-5.7.20/data/mysql
    

    ```shell

    修改 /etc/my.cnf

    basedir=/usr/local/mysql-5.7.20 datadir=/usr/local/mysql-5.7.20/data/mysql socket=/tmp/mysql.sock port=3306 server_id=100 [client] default-character-set=utf8 socket=/tmp/mysql.sock

[mysql] default-character-set=utf8 socket=/tmp/mysql.sock

![image.png](https://cdn.nlark.com/yuque/0/2020/png/2922466/1608608056239-ec98bb38-617c-44ab-a3b2-d3dc9efe087f.png#align=left&display=inline&height=451&margin=%5Bobject%20Object%5D&name=image.png&originHeight=451&originWidth=549&size=28957&status=done&style=none&width=549)

- 启动服务
```shell
service mysqld start

测试连接

执行: ./mysql -uroot
出现权限问题:
image.png
解决方案:

  1. 使用初始化过程的临时密码进入

image.png

  1. 如果忘记初始密码,可以通过修改root的初始密码。进入,修改 my.cnf 加入 skip-grant-tables

image.png
再次连接mysql,就不需要密码了:
image.png

配置客户端坏境变量

#########mysql config start##########
export PATH=$PATH:/usr/local/mysql-5.7.20/bin
#########mysql config end##########

注意点

  • 如果通过临时密码登陆是不能做操作的会报如下错误:

image.png
需要重新设置密码:

ALTER USER 'root'@'localhost' identified by 'xxxx';  # 设置密码
flush privileges; # 刷新权限
  • 权限控制
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xxxx' WITH GRANT OPTION;  # 密码:xxxx,自行修改
    

    注意⚠️:如果上面执行报错先刷新一下权限

image.png
删除多余用户记录:

delete from user where host != '%';
flush privileges;

image.png