MySQL Linux下的安装

  1. 下载包

    1
    https://repo.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
  2. 解压

    1
    2
    3
    4
    $ tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 
    # 移动到local/mysql目录下
    $ sudo mv mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql

  3. 创建 data 目录

    1
    mkdir data
  4. 创建 MySQL 用户 并升级权限

    1
    2
    3
    useradd mysql
    chown -R mysql:mysql /usr/local/mysql
    chmod -R 755 /usr/local/mysql
  5. 初始化

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

    image-20200823152508875

    注意上面的红框是个初始的登录密码。

  6. 启动并修改密码

    1
    2
    cd support-files
    ./mysql.server start
  7. 连接修改密码

    在连接 MySQL 的时候出现依赖错误。

    1
    ./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

    image-20200823152726962

    这里是少了一个依赖导致的,可以使用 ldd mysql 来查看 MySQL 对应的依赖:

    image-20200823153059784

    从上图中可以看到,其中libtinfog.so.5依赖没有。

    这个文件一般在 /etc/lib64/,如果没有需要重现下载,或者拷贝一个。

    image-20200823153649214

    我本地是有的 6.0 ,直接创建一个同步链接就可以了:

    1
    sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
  1. 开始连接

    1
    ./mysql -uroot -p
  2. 修改密码和允许远程连接

    1
    2
    3
    4
    5
    6
    # 修改密码
    mysql>ALTER USER USER() IDENTIFIED BY 'yourpass';
    mysql>flush privileges
    mysql>use mysql;
    msyql>update user set user.Host='%' where user.User='root';
    mysql>flush privileges;
  3. 修改完还是无法连接

    测试是否是防火墙拦截了,先停止防火墙试试

    1
    2
    3
    4
    5
    # 火墙的状态
    $ firewall-cmd --state
    running
    $ systemctl stop firewalld

  4. 停止火墙后能够正常连接,说明是 MySQL 端口没有在防火墙中信任

    1
    2
    firewall-cmd --add-port=3306/tcp --permanent 开放某一个端口号
    systemctl restart firewalld 启动防火墙