zoukankan      html  css  js  c++  java
  • mysql源码安装

    阿里云 windows 版本为 mysql 5.7

    之后下载 boost库 ()

     wget https://jaist.dl.sourceforge.net/project/boost/boost/1.61.0/boost_1_61_0.tar.gz

    先后尝试编译安装 boost_1_64_0.tar.gz 及 boost_1_61_0.tar.gz

    都在编译过程中出错了

    最后安装了 boost_1_64_0 到 /usr/local 目录下 就是分别把头文件拷贝到了  /usr/local/include 把lib 拷贝到了  /usr/local/lib 时间为 Jun 17 17:42

    而且之前就己安装了boost 库(通过yum命令安装的 未查什么版本) 

    sh ./bootstrap.sh 配置 

    ./b2 编译

    ./b2 install --prefix=/usr/local/ 安装

    腾讯云 3.10.0-514.21.1.el7.x86_64 CentOS 7.3 64位

    想在 腾讯云使用mysql++ 首先需要安装mysql

    mysql源码安装

    首先下载 mysql源码 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22.zip

     wget https://sourceforge.mirrorservice.org/b/bo/boost/boost/1.59.0/boost_1_59_0.tar.gz 

    或者  wget  https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.22.tar.gz

    手动下载 wget https://sourceforge.mirrorservice.org/b/bo/boost/boost/1.59.0/boost_1_59_0.tar.gz 

    这个版本的安装脚本里就是写死的 会去下载 boost_1_59_0.tar.gz ,这里先下载好。

    然后解压mysql 

    cmake 就是配置 makefile 的意思  这里在 参数-DWITH_BOOS 指定  boost_1_59_0.tar.gz 所在的目录

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

    mysql   用户及目录规划

     groupadd mysql

     useradd -r -g mysql -s /sbin/nologin mysql

    mysql软件目录: /app/mysql/mysql_home
    mysql数据目录:/app/mysql/mysql_data
    mysql日志目录:/app/mysql/mysql_log

    //对目录授权
    chown -R mysql.mysql mysql/

    解压mysql后进入目录进行配置编译

    cmake .  -DCMAKE_INSTALL_PREFIX=/app/mysql/mysql_home   -DMYSQL_DATADIR=/app/mysql/mysql_data   -DDOWNLOAD_BOOST=1   -DWITH_BOOST=/app/mysql-5.7.22/boost   -DSYSCONFDIR=/etc   -DWITH_INNOBASE_STORAGE_ENGINE=1   -DWITH_PARTITION_STORAGE_ENGINE=1   -DWITH_FEDERATED_STORAGE_ENGINE=1   -DWITH_BLACKHOLE_STORAGE_ENGINE=1   -DWITH_MYISAM_STORAGE_ENGINE=1   -DENABLED_LOCAL_INFILE=1   -DENABLE_DTRACE=0   -DDEFAULT_CHARSET=utf8   -DDEFAULT_COLLATION=utf8_general_ci   -DWITH_EMBEDDED_SERVER=1

    这时需要引用boost库 脚本中自动会下载 boost 1.59到 解压后根目录下 ./boost目录下 因为被墙 失败

    这时手动下载 wget https://sourceforge.mirrorservice.org/b/bo/boost/boost/1.59.0/boost_1_59_0.tar.gz 

    然后自脚本会自动解压 进行编译配置 

    然后是 make 编译

    报错内存不足

    g++: internal compiler error: Killed (program cc1plus)

    开启虚拟内存

    $dd if=/dev/zero of=/data/swap_add bs=1M count=2048

    $mkswap /data/swap_add

    $swapon /data/swap_add $swapon -s

     make install 安装

    新建新的配置文件/etc/my.cnf

    [client]
    port=3306
    socket=/app/mysql/mysql_data/mysql.sock
    default-character-set=utf8
    [mysqld]
    port=3306
    user=mysql
    socket=/app/mysql/mysql_data/mysql.sock
    pid-file=/app/mysql/mysql_data/mysql.pid
    basedir=/app/mysql/mysql_home
    datadir=/app/mysql/mysql_data
    tmpdir=/app/mysql/mysql_tmp
    character-set-server=utf8
    log_error=/app/mysql/mysql_log/mysql.err

    server-id=2
    log_bin=/app/mysql/mysql_log/binlog

    general_log_file=/app/mysql/mysql_log/general_log
    general_log=1

    slow_query_log=ON
    long_query_time=2
    slow_query_log_file=/app/mysql/mysql_data/query_log
    log_queries_not_using_indexes=ON

    进到bin目录 初始化数据库

    ./mysqld --initialize-insecure --user=mysql --basedir=/app/mysql/mysql_home --datadir=/app/mysql/mysql_data

    安装ssl,可指定文件生成路径,默认为DATA里面

    ./mysql_ssl_rsa_setup 

    复制一些 init程序

      cp /app/mysql/mysql_home/support-files/mysql.server /etc/init.d/mysqld

    执行 /etc/init.d/mysqld start 

    这时报启动错误 缺少mysql.pid 网上说是因为没有这个文件的权限 重新设置权限 

    再试 还是报错,然后通过查mysql日志

    日志报错说有的表不存在 然后把 mysql_data  里面的东西都删了再用安装数据库脚本执行一下 再试就可以了

    ./mysql_install_db --user=mysql --basedir=/app/mysql/mysql_home --datadir=/app/mysql/mysql_data

    报错说有的表不存在 然后把 mysql_data  里面的东西都删了再用安装数据库脚本执行一下 再试就可以了

    ./mysql_install_db --user=mysql --basedir=/app/mysql/mysql_home --datadir=/app/mysql/mysql_data

    删除 data目录下面的所有东西再试 执行 /etc/init.d/mysqld start 

    启动成功

    然后在安装目录下面用 ./mysql命令报错

    原因是之前己通过命令安装 ,虽然卸载了但密码还没清除   

    先在配置里

    [mysqld]
    skip-grant-tables 加这句忽略密码验证

    修改密码

    mysql> use mysql;
    mysql> update user set password=password("你的新密码") where user="root";
    输入update mysql.user set password=password('root') where user='root'时提示ERROR 1054 (42S22): Unknown column 'password' in 'field list',

    原来是mysql数据库下已经没有password这个字段了,password字段改成了
    update mysql.user set authentication_string=password('你的新密码') where user='root' ;

    ok 成功

    mysql前置工具包安装
    yum install gcc gcc-c++ libgcc cmake ncurses-devel openssl-devel
    mysql 编译时多进程选项
    make -j `grep processor /proc/cpuinfo | wc -l` && make install


    mysql 安装的几个错误
    Starting MySQL./etc/init.d/mysqld:行181: log_failure_msg: 未找到命令
    脚本 /etc/init.d/mysqld 缺少函数
    添加
    function log_failure_msg() {
    echo "$@" "[ FAILED ]"
    }
    function log_success_msg() {
    echo "$@" "[ OK ]"
    }
    function log_warnning_msg() {
    echo "$@" "[ Warn ]"
    }
    log_success_msg()
    {
    echo " SUCCESS! $@"
    }
    log_failure_msg()
    {
    echo " ERROR! $@"
    }
    log_warnning_msg()
    {
    echo " Warnning! $@"
    }

    跳过登陆
    vim /etc/my.cnf
    [mysqld]
    skip-grant-tables
    /etc/init.d/mysqld restart
    跳过登陆后没权限
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:yes)
    grant all privileges on *.* to 'skip-grants user'@'skip-grants host' identified by ".";
    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 错误。则执行下 flush privileges
    flush privileges;
    /etc/init.d/mysqld restart


    ps -ef|grep mysqld
    kill -9

    #列出所有被安装的rpm package
    rpm -qa | grep mariadb
    #卸载
    rpm -e mariadb-libs-5.5.35-3.el7.x86_64
    执行报错:
    error: Failed dependencies:
    libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
    libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
    错误:没有依赖关系:
    libmysqlclient.so.18()(64位)是需要的(安装)postfix-2:2.10.1-6.el7.x86_64。
    libmysqlclient.so.18(libmysqlclient_18)(64位)是需要的(安装)postfix-2:2.10.1-6.el7.x86_64。
    #强制卸载
      rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64

    手动安装前置工具包 ,这些具体的再看,有时间再从源码安装一遍

    yum install gcc gcc-c++ libgcc cmake ncurses-devel openssl-devel

    https://files-cdn.cnblogs.com/files/lishuaicq/ncurses-6.2.tar.gz

    http://mirrors.kernel.org/gnu/automake/automake-1.11.4.tar.gz

    http://mirror.hust.edu.cn/gnu/libtool/libtool-2.4.6.tar.gz

    http://www.zlib.net/fossils/zlib-1.2.5.3.tar.gz

    http://ftp.gnu.org/old-gnu/libstdc++/libstdc++-2.8.1.1.tar.gz

    http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.gz

    http://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.gz

    http://mirrors.kernel.org/gnu/automake/automake-1.16.tar.gz

    http://ftp.gnu.org/gnu/bison/bison-2.5.1.tar.gz

    http://mirror.hust.edu.cn/gnu/libtool/libtool-2.4.6.tar.gz

    https://cmake.org/files/v3.7/cmake-3.7.1.tar.gz

  • 相关阅读:
    [Swift]LeetCode1093. 大样本统计 | Statistics from a Large Sample
    [Swift]鸡尾酒排序 | Cocktail Sort
    [Swift]插入排序 | Insertion sort
    [Swift]求最大公约数和最小公倍数
    [Swift]LeetCode1087. 字母切换 | Permutation of Letters
    [Swift]LeetCode1086. 前五科的均分 | High Five
    [Swift]LeetCode1088. 易混淆数 II | Confusing Number II
    [Swift]LeetCode1090. 受标签影响的最大值 | Largest Values From Labels
    [Swift]LeetCode1091. 二进制矩阵中的最短路径 | Shortest Path in Binary Matrix
    [Swift]LeetCode1092. 最短公共超序列 | Shortest Common Supersequence
  • 原文地址:https://www.cnblogs.com/heling/p/9193473.html
Copyright © 2011-2022 走看看