zoukankan      html  css  js  c++  java
  • 源码安装mysql-5.7.13一周的冤枉路总结。满满的都是泪啊

    MySQL从5.5以后都是用cmake来进行安装。

    5.7.5开始安装环境需要boost库的支持

    下载安装包:

    https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.13.tar.gz

    https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

    tar解压安装包。

    需要的编译环境:make gcc gcc-c++ ncurses-devel openssl openssl-devel bison*

    ps:编译环境一定要装全,被坑了两星期悟出的血的教训。

    正式安装前一定查看有没有安装MySQL的rpm包。如果有的话先卸载。有的系统会自带有mariadb建议同样卸载。

    编译:

    cmake . -DCMAKE_PREFIX=/usr/local/mysql

    -DMYSQL_DATADIR=/data/mydata

    -DSYSCONFDIR=/etc

    -DWITH_INNOBASE_STORAGE_ENGINE=1

    -DWITH_ARCHIVE_STORAGE_ENGINE=1

    -DWITH_BLACKHOLE_STORAGE_ENGINE=1

    -DWITH_READLINE=1

    -DWITH_LIBWRAP=0

    -DMYSQL_UNIX_ADDR=/tmp/mysql.sock

    -DWITH_SSL=system

    -DWITH_ZLIB=system

    -DWITH_BOOST=/document/tar/boost_1_59_0

    -DDEFAULT_CHARSET=utf8

    -DDEFAULT_COLLATION=utf8_general_ci

    ps:感觉参数比较多在命令行里不好写,可以写成脚本。出现问题,把问题粘到百度上找吧。基本上都是编译环境的问题。缺什么包直接装什么包就行了。

    只要以上没问题,就可以按照make ; make install 的套路走了。这一步比较慢,视机器性能而定。

    如果编译出现问题需要重新编译记得

    make clean        #清除编译缓存
    rm CMakeCache.txt   #删除生成的文件

    安装完成。

    创建mysql用户

    useradd mysql

    将MySQL的安装目录更改属主和属组为mysql。

    chown -R mysql:mysql  /usr/local/mysql

    在mysql目录下创建mysql-files目录

    mkdir mysql-files

    ps:默认时没有这个目录的。见别人创建我也创建了。也不知道是干啥用的。

    然后是初始化目录

    ./bin/mysqld --initialize --user=mysql

    第一次初始化的时候在最后会有一串类似乱码的东西。那是个临时密码。(然而并没有什么卵用。因为你可能压根就启动不起来)

    ps:初始化默认只能进行一次。如果继续初始化的话。需要把配置文件my.cnf中的数据目录清空。同样,如果要更改数据存放目录。也要重新进行初始化。

     

    配置文件解析:

    [mysqld]

    datadir=/data/mydata   #数据目录

    socket=/var/lib/mysql/mysql.sock    

    # Disabling symbolic-links is recommended to prevent assorted security risks

    symbolic-links=0

    skip-grant-tables   #这个是默认没有的,跳过密码登陆。

    # 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/error.log         #错误日志文件

    pid-file=/var/run/mysql/mysql.pid           #进程PID

     

    #

    # include all files from the config directory

    #

    !includedir /etc/my.cnf.d

     

    启动mysql

    ./support-files/mysql.server start

    ps:如果能启动起来,只能说你运气逆天

    如果启动不起来,查看my.cnf

    如果是:

    [mysqld_safe]

    log-error=/var/log/mariadb/error.log        

    pid-file=/var/run/mariadb/mariadb.pid         

    将mariadb更改为mysql。再查看有没有这两个路径,如果没有就创建这两个目录。只创建目录,不创建文件。

    注意属组和属主要是mysql。

    然后重新启动。

    如果临时密码忘了或者是临时密码登陆不进去。更改密码:./bin/mysqladmin -u root password "root"    #注意路径问题。

    如果登陆或更改密码时报错:

    [root@localhost mysql]# ./bin/mysql -uroot -p

    Enter password:

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

    ps:被这问题缠绕了一天。解决办法就是用find在根目录下查找mysql.sock文件。然后做个软链接到报错的路径。

    [root@localhost mysql]# find / -name mysql.sock

    find: ‘/run/user/1001/gvfs’: 权限不够

    /var/lib/mysql/mysql.sock

    [root@localhost mysql]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

    根据个人找到的路径不同做更改,具体原理参照下面链接。非常详细。

    https://www.cnblogs.com/Lam7/p/6090975.html    ps:感谢

    然后重新启动服务。可以先用跳过密码登陆。

    my.cnf配置文件中加:skip-grant-tables

    登陆后更改密码:

    update mysql.user set authentication_string=password("root") where user;

    如果用随机密码登陆需要先更改密码:set password=password('new password')要不然无论什么操作都会提醒You must reset your password using ALTER USER statement before executing this statement.

    ps:整个过程找问题找资料找了一周,希望这篇文章能让你少走点冤路。

    附:

    创建远程用户:
    grant all privileges on *.* to admin@"%" identified by "password";
    all privileges 表示所有权限
    *.* 表示所有库下所有表
    admin 用户名
    % 所有主机地址
    identified by 关键字,后跟密码
    password 密码

  • 相关阅读:
    python进程和线程(五)
    java开发常用Linux命令
    IntelliJ IDEA中Maven插件无法更新索引之解决办法
    Spring事务配置的五种方式
    思考,快与慢(读书笔记)
    freemarker,jsp,velocity比较
    java学习之路经验总结
    iBATIS源码分析
    freemarker的使用心得
    javaScript中的关键字和保留字
  • 原文地址:https://www.cnblogs.com/lingshu/p/8969388.html
Copyright © 2011-2022 走看看