zoukankan      html  css  js  c++  java
  • 阿里云服务器linux环境搭建SSM项目(二)--linux环境配置mysql5.7.md

    阿里云服务器搭建SSM项目(二)

    在服务器上配置数据库mysql 5.7.33


    • 在服务器的防火墙 新增协议


    1.mysql 5.7.33


    2.把文件丢到xftp里,解压

    文件路径:/root/java/install-package

    去那个路径,解压

    cd /root/java/install-package
    
    tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz -C /root/java/mysql
    



    4.添加系统mysql组和mysql用户

    添加系统mysql组

    groupadd mysql
    

    添加mysql用户

    useradd -r -g mysql mysql
    

    查看添加的用户组,文件/etc/group

    vi是编辑文件,查看直接用cat,管道限制grep

    cat /etc/group |grep mysql
    


    查看用户,文件/etc/passwd

    cat /etc/passwd
    


    5.修改配置文件 /etc/my.cnf

    vim /etc/my.cnf
    

    主要内容如下:

    [mysqld]
    bind-address=0.0.0.0
    user=mysql
    basedir=/root/java/mysql/mysql-5.7.33-linux-glibc2.12-x86_64
    datadir=/var/lib/mysql/data
    character_set_server=utf8mb4
    socket=/var/lib/mysql/mysql.sock
    explicit_defaults_for_timestamp=true
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd
    
    [mysqld_safe]
    log-error=/var/log/mysql/mysql.err
    pid-file=/root/java/mysql/pid/mysql.pid
    
    [client]
    port=3306
    socket=/var/lib/mysql/mysql.sock  #和[mysqld]中的socket路径一致
    
    [mysql]
    socket=/var/lib/mysql/mysql.sock  #和[mysqld]中的socket路径一致
    

    最重要的是port,basedir,datadir。其他也很重要,都加上

    另外要注意log-error和pid-file的默认路径是否包含远程文件夹,有的话要修改成本地文件夹

    还有加上user=mysql


    *mysql编码使用utf8mb4:

    utf8字符集支持最长三个字节的UTF-8字符,而utf8mb4支持四个字节。使用utf8字符集,无法存储Emoji表情(四个字节的)以及新增的Unicode字符等。

    https://www.cnblogs.com/beyang/p/7580814.html


    6.创建mysql配置的相关文件夹,设置文件夹的拥有者,设置权限

    这里要保证所有mysql的my.cnf中涉及的文件夹 的拥有者是用户mysql,以及所有者的权限是rwx。

    • 修改拥有者

      #表示修改当前目录以及其子目录的拥有者为mysql(用户):mysql(所属组)
      chown -R mysql:mysql ./
      
    • 修改权限

      #表示修改当前文件夹的所有者权限为rwx
      chmod u+rwx *
      

    以下为涉及文件夹,都要做以上两部操作。

    6.1 mysql安装目录

    • mysql安装目录

      cd /root/java/mysql
      

    6.2 创建data文件夹

    去路径/var/lib/mysql下创建文件夹data

    mkdir data
    

    *我原本把data设置到目录/root/java/mysql下,后面初始化数据库会报错。

    报错:
    mysqld: Can't change dir to '/root/java/mysql/data' (Errcode: 13 - Permission denied)
    2021-03-17T07:22:40.474337Z 0 [ERROR] failed to set datadir to /root/java/mysql/data/
    

    所以还是把datadir的路径设置回datadir=/var/lib/mysql/data

    报错:
    [ERROR] unknown variable '路径位置'
    

    6.3 创建mysql.sock文件

    我之前有可能误删了这个文件,如果本身有这个文件就不用新建了。

    在路径/var/lib/mysql下创建文件mysql.sock


    6.4 创建文件mysql.err

    在路径/var/log/mysql下创建文件mysql.err


    6.5 创建mysql.pid

    在路径/root/java/mysql/pid下创建文件mysql.pid



    7.初始化数据库

    进入mysql的bin目录

    cd /root/java/mysql/mysql-5.7.33-linux-glibc2.12-x86_64/bin
    

    执行当前目录下的mysqld命令,进行初始化。

    ./mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize
    

    *--defaults-file参数一定要放在第一个,不然会报错[ERROR] unknown variable 'defaults-file=/etc/my.cnf'

    参考

    *若报错./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    是因为没有安装libaio.so,执行yum命令安装即可。

    yum install -y libaio
    



    执行结果

    记住临时密码,后面登录要用

    W*lj:eu+r7y-
    



    8.将mysql加入开机启动(不是这条命令)

    chkconfig --add /root/java/mysql/mysql-5.7.33-linux-glibc2.12-x86_64/bin/mysqld
    



    9.启动mysql

    将mysql.server复制到目录/etc/rc.d/init.d下,命名为mysql。

    cp /root/java/mysql/mysql-5.7.33-linux-glibc2.12-x86_64/support-files/mysql.server /etc/rc.d/init.d/mysql
    

    启动mysql

    service mysql start
    

    重启是service mysql restart,有任何配置修改都要重启mysql。


    查看当前mysql相关进程

    ps -ef|grep mysql
    

    mysql启动成功


    不想每次都到mysql安装目录的bin目录下启动mysql,执行下面命令后可以直接执行类似mysql-u root -p 的命令

    ln -s /root/java/mysql/mysql-5.7.33-linux-glibc2.12-x86_64/bin/mysql /usr/bin/mysql
    

    *启动mysql的时候出现报错

    The server quit without updating PID file(xxx路径下的xxx.pid)

    解决:

    这步我不确定有没有作用。我的问题有可能是通过修改my.cnf中的某些参数路径,文件夹权限解决的。

    参考

    在文件/etc/rc.d/init.d/mysql中这个位置加上--user=mysql

    位置不太好找,在start模块里加上--user=mysql



    10.登录mysql,修改密码

    登录mysql,密码填之前那个临时密码

    ./mysql -u mysql -p
    

    有些人直接填写之前临时密码就ok了,这步后面不用看了。

    但我这里一致在报错,下面列举我碰到的问题。


    10.1 出现报错

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket 'socket=/var/lib/mysql/mysql.sock' (2)

    (参考)

    我通过它的解决方案一解决的:http://aiezu.com/article/mysql_cant_connect_through_socket.html

    https://blog.csdn.net/sihai12345/article/details/73380649


    我通过这个解决:

    (1)检查my.cnf中三个地方是否都配置好了socket

    (2)添加软连接

    ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
    

    重启mysql


    10.2 出现报错

    ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: YES)


    解决:

    (1)在my.cnf设置跳过密码授权

    在配置文件my.cnf中[mysqld]加上

    skip-grant-tables
    

    (2)密码直接 空格回车,成功进入。

    (3)切换数据库

    use mysql;
    

    (4)修改用户root的密码

    update user set authentication_string=password('root') where user='root';
    

    再次修改密码

    alter user 'root'@'localhost' identified by 'root';
    

    (5)指定授权:前一个引号里用户名,后一个引号里是密码

    参考

    a.使用 用户/密码,从任何主机连接到mysql服务器

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    

    b.使用 用户/密码,从当前主机连接到mysql服务器

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;
    

    (6)刷新权限

    flush privileges;
    

    到此结束



    11.设置mysql开机启动

    添加软链接

    ln -s /root/java/mysql/mysql-5.7.33-linux-glibc2.12-x86_64/support-files/mysql.server  /etc/rc.d/init.d/mysql
    



    12.远程连接设置

    到这里,是无法使用navicat远程访问数据库的,需要再设置一些东西。

    [参考]

    https://blog.csdn.net/weixin_43493122/article/details/96281220(我没有开启防火墙,所以防火墙设置不用管)


    (1)启动mysql

    # service mysql start
    

    (2)切换到mysql数据库

    mysql> use mysql;
    

    (3)开放远程连接

    update user set host = '%' where user = 'root'; 
    

    执行这条命令,可能出现报错Duplicate entry '%-root' for key 'PRIMARY',不影响结果 忽视即可。出现这条报错的原因是user表里有两条user=root的记录。

    (4)刷新权限

    flush privileges;
    

    (5)查看user表的user和host

    select host, user from user;
    

    如果root有两个host:%和localhost,就设置成功了。



    13.使用navicat远程连接mysql

    参考

    navicat需要填写常规和SSH两页信息

    注意:SSH的用户和密码是服务器的远程连接中设置密码。


    • 常规


    • 服务器的远程连接在这里先设置

    • SSH

  • 相关阅读:
    【Python开发】Lambda表达式使用
    【Python开发】Python 适合大数据量的处理吗?
    【Python开发】Python 适合大数据量的处理吗?
    【Python开发】matplotlib绘图不显示问题解决plt.show()
    【Python开发】matplotlib绘图不显示问题解决plt.show()
    【C/C++语言】指针常量与常量指针的区别
    【C/C++语言】指针常量与常量指针的区别
    【Qt开发】【计算机视觉】OpenCV在Qt-MinGw下的编译库
    【Qt开发】【计算机视觉】OpenCV在Qt-MinGw下的编译库
    【并行计算-CUDA开发】从零开始学习OpenCL开发(一)架构
  • 原文地址:https://www.cnblogs.com/musecho/p/14564522.html
Copyright © 2011-2022 走看看