• Linux安装MySQL8.0


    Linux版本:CentOS7

    MySQL版本:mysql-8.0.31 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz

    1、本地安装包上传到服务器的/usr/local目录下

    scp /Users/yj-333/Desktop/mysql-8.0.31.tar.xz root@192.168.18.121:/usr/local/mysql-8.0.31.tar.xz

    2、添加gmysql用户组,umysql用户(当前用户root)

    1. #> groupadd gmysql
    2. #> useradd -g gmysql umysql

    3、解压tar.xz文件(当前用户root)

    1. #> tar -xvf mysql-8.0.31.tar.xz #源文件500多M,但是解压后只有1/5左右
    2. #> mv mysql-8.0.31-linux-glibc2.12-x86_64 mysql8 #修改名称

    4、创建data文件夹(当前用户root)

    1. #> cd /usr/local/mysql8
    2. #> mkdir data

    5、修改文件夹的归属用户(当前用户root)

    #> chown -R umysql:gmysql /usr/local/mysql8

    6、配置环境,编辑/etc/profile文件(当前用户root)

    1. #> vim /etc/profile
    2. 在文件最后添加:export PATH=$PATH:/usr/local/mysql8/bin:/usr/local/mysql8/lib
    3. #> source /etc/profile

    7、编辑/etc/my.cnf文件(当前用户root)

    1. [mysql]
    2. default-character-set=utf8mb4
    3. [client]
    4. #port=3306
    5. #socket=/var/lib/mysql/mysql.sock
    6. [mysqld]
    7. port=3306
    8. #server-id=3306
    9. user=mysql
    10. general_log = 1
    11. general_log_file= /var/log/mysql/mysql.log
    12. socket=/var/lib/mysql/mysql.sock
    13. basedir=/usr/local/mysql8
    14. datadir=/usr/local/mysql8/data
    15. log-bin=/usr/local/mysql8/data/mysql-bin
    16. innodb_data_home_dir=/usr/local/mysql8/data
    17. innodb_log_group_home_dir=/usr/local/mysql8/data/
    18. character-set-server=utf8mb4
    19. lower_case_table_names=1
    20. autocommit=1
    21. default_authentication_plugin=mysql_native_password
    22. symbolic-links=0
    23. # Disabling symbolic-links is recommended to prevent assorted security risks
    24. # Settings user and group are ignored when systemd is used.
    25. # If you need to run mysqld under a different user or group,
    26. # customize your systemd unit file for mariadb according to the
    27. # instructions in http://fedoraproject.org/wiki/Systemd
    28. [mysqld_safe]
    29. log-error=/usr/local/mysql8/data/mysql.log
    30. pid-file=/usr/local/mysql8/data/mysql.pid
    31. #
    32. # include all files from the config directory

    8、修改、拷贝/ect/init.d/mysql中的datadir、basedir(当前用户root)

    1. #> vim /usr/local/mysql8/support-files/mysql.server
    2. #> basedir=/usr/local/mysql8
    3. #> datadir=/usr/local/mysql8/data
    4. #> 拷贝服务端工具到init.d目录下:
    5. #> cp -a /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql
    6. #> cp -a /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld

    9、切换到umysql用户(当前用户root)

    #> su umysql

    10、初始化数据,执行过后将在/usr/local/mysql8/data下产生数据(当前用户umysql)

    1. #> ./mysqld --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data/ --initialize
    2. 此步骤将会产生密码,需要把密码记录下来。

    11、修改/etc/my.cnf文件权限(执行前用户切换为root)

    1. #> chmod 644 /etc/my.cnf
    2. #> chmod +x /etc/init.d/mysql
    3. #> chmod +x /etc/init.d/mysqld

    12、查看/var/lib/mysql是否存在,否则进行创建(当前用户root)

    1. #> mkdir /var/lib/mysql
    2. #> chown -R umysql:gmysql /var/lib/mysql/
    3. # > su umysql

    13、启动MySQL(当前用户umysql)

    #> service mysql start

    14、修改账户信息(当前用户umysql)

    1. #> mysql -u root -p
    2. #> 输入初始化时候的密码
    3. #> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
    4. #> flush privileges;
    5. #> use mysql;
    6. #> create user 'root'@'%' identified by 'password';
    7. #> grant all privileges on *.* to 'root'@'%' with grant option;
    8. #> flush privileges;

    15、防火墙中打开3306端口,让外界可以访问到(当前用户root)

    1. #> firewall-cmd --add-port=3306/tcp --permanent
    2. #> firewall-cmd --reload

    16、问题总结:

    a、如果存在问题,需要重新安装,直接删除掉/usr/local/mysql8/data文件夹即可,然后在重新初始化数据(当前用户umysql)

    1. #> cd /usr/local/mysql8
    2. #> rm -rf data
    3. #> ./mysqld --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data/ --initialize

    b、启动MySQL的时候提示Warning: World-writable config file '/etc/my.cnf' is ignored。大概意思是权限全局可写,任何一个用户都可以写。mysql担心这种文件被其他用户恶意修改,所以忽略掉这个配置文件。这样mysql无法关闭。(当前用户root)

    #> chmod 644 /etc/my.cnf

    c、mysql -u root -p登录的时候报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)(当前用户root)

    可能是/etc/my.cnf文件中的socket字段赋值错误。

    解决mysql.sock连接不上问题:Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)_雨客cs的博客-CSDN博客

    d、启动数据库报错service mysql start:Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql8/data/localhost.localdomain.pid).

    可能是用错了用户,需要切换为umysql用户。

    注意kill掉的时候需要用root权限,启动的时候用umysql权限。

  • 相关阅读:
    【JAVAEE基础学习】--文件上传&下载案例-1.0
    CMMI是什么意思
    【测试沉思录】13. 玩转 Dubbo 接口测试的 3 种姿势
    关于指针与引用传递的效率问题
    跟着GPT学设计模式之观察者模式
    华为机试真题 Python 实现【打印机队列】【2022.11 Q4 新题】
    PyTorch入门教学——简介与环境配置
    SpringCloud 学习笔记总结 (八)
    docker-compose.yml(spark)
    Net5开发的视频监控管理系统
  • 原文地址:https://blog.csdn.net/think12/article/details/127710910