zoukankan      html  css  js  c++  java
  • CentOS_5.6下使用cmake编译MySQL_5.5.11


    MySQL 最新的版本5.5.11需要cmake编译安装,估计以后的版本也会采用这种方式,网上找了一些安装方法有些地方是错的,自己整理一份 所以特地记录一下安装步骤及过程,以供参考!
    1 mysql 5.5.11编译安装
    1.1 安装所需要系统库相关库文件
    gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*
    1.2 创建mysql安装目录  
    [root@localhost mysql-5.5.11]# mkdir -p /usr/local /mysql/
    1.3 创建数据存放目录
    [root@localhost mysql-5.5.11]# mkdir -p /data/mysql/
    1.4 创建用户和用户组与赋予数据存放目录权限
      [root@localhost mysql-5.5.11]# groupadd mysql
      [root@localhost mysql-5.5.11]# useradd -g mysql mysql
    [root@localhost mysql-5.5.11]# chown mysql.mysql -R /data/mysql/

    1.5 安装cmake
    (mysql5.5以后是通过cmake来编译的)下载解压cmake-2.8.4.tar.gz
    [root@localhost mysql-5.5.11]# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
    [root@localhost mysql-5.5.11]# tar zxvf cmake-2.8.4.tar.gz
    [root@localhost mysql-5.5.11]# cd cmake-2.8.4
    [root@localhost cmake-2.8.4]# ./bootstrap
    --------------------------------------------- CMake 2.8.4, Copyright 2000-2009 Kitware, Inc. --------------------------------------------- Error when bootstrapping CMake: Cannot find appropriate C compiler on this system. Please specify one using environment variable CC. See cmake_bootstrap.log for compilers attempted. --------------------------------------------- Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log ---------------------------------------------
    报错:缺少C的编译器。
    安装gcc编译器
    可以从Linux系统的安装盘中安装,也可以简单地用yum安装
    [root@localhost ~]# yum install gcc
    继续cmake的安装
    [root@localhost cmake-2.8.4]# ./bootstrap
    --------------------------------------------- CMake 2.8.4, Copyright 2000-2009 Kitware, Inc. C compiler on this system is: cc --------------------------------------------- Error when bootstrapping CMake: Cannot find appropriate C++ compiler on this system. Please specify one using environment variable CXX. See cmake_bootstrap.log for compilers attempted. --------------------------------------------- Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log ---------------------------------------------
    再次报错:缺少C++编译器。
    安装gcc-c++编译器
    同样可以从Linux系统的安装盘中安装,或者简单地用yum安装
    [root@localhost ~]# yum install gcc-c++
    重复上面的操作
    [root@localhost cmake-2.8.4]# ./bootstrap
    没有报错后,编译安装
    [root@localhost cmake-2.8.4]# gmake
    [root@localhost cmake-2.8.4]# gmake install
    [root@localhost cmake-2.8.4]#./configure
    [root@localhost cmake-2.8.4]# make && make install

    1.6 安装mysql 5.5.11
    [root@localhost mysql-5.5.11]#wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.11.tar.gz
    [root@localhost down]# tar zxvf mysql-5.5.11.tar.gz
    [root@localhost down]# cd mysql-5.5.11

    1.7 编译mysql-5.5.11
    [root@localhost mysql-5.5.11]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
    -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock
    -DDEFAULT_CHARSET=utf8
    -DDEFAULT_COLLATION=utf8_general_ci
    -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk
    -DWITH_MYISAM_STORAGE_ENGINE=1
    -DWITH_INNOBASE_STORAGE_ENGINE=1
    -DWITH_MEMORY_STORAGE_ENGINE=1
    -DWITH_READLINE=1
    -DENABLED_LOCAL_INFILE=1
    -DMYSQL_DATADIR=/data/mysql
    -DMYSQL_USER=mysql
    -DMYSQL_TCP_PORT=3306
    上面的命令一次拷进命令行。

    若运行上面命令出现如下错误:
    *****************************************
    -- Could NOT find OpenSSL (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)
    -- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
    CMake Error at cmake/readline.cmake:83 (MESSAGE):
    Curses library not found. Please install appropriate package,


    remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
    Call Stack (most recent call first):
    cmake/readline.cmake:118 (FIND_CURSES)
    cmake/readline.cmake:214 (MYSQL_USE_BUNDLED_READLINE)
    CMakeLists.txt:257 (MYSQL_CHECK_READLINE)


    -- Configuring incomplete, errors occurred!


    解决办法:
    rm -f CMakeCache.txt
    yum -y install ncurses-devel
    yum install bison


    然后再使用cmake编译就可以了.

    ****************************************

    [root@host mysql-5.5.11]# make
    [root@host mysql-5.5.11]# make install
    1.8 复制配置文件
    [root@mysql-5.5.11]# cp support-files/my-medium.cnf /etc/my.cnf
    1.9 初始化数据库
    (执行前 需要chmod 755 scripts/mysql_install_db 赋给文件执行权限)
    [root@localhost mysql-5.5.11]#scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
    注:#basedir mysql安装路径 datadir 数据库文件储存路径

     1.10.设置mysqld的开机启动

    [root@mysql-5.5.11]# cp support-files/mysql.server /etc/init.d/mysql

    [root@mysql-5.5.11]# chmod 755 /etc/init.d/mysql

    [root@mysql-5.5.11]# chkconfig mysql on

    1.11 启动mysql服务

    [root@localhost mysql-5.5.11]# /etc/init.d/mysql start //服务器端开关

    /etc/init.d/mysql start

    Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid). [FAILED] 启动mysql失败


    解决Mysql不能启动的问题

    安装好MYSQL后启动数据库出错
    [root@localhost mysql]# service mysqld start
    Starting MySQL..Manager of pid-file quit without updating f[失败]
    在网上查了半天,找到的有两种方法,
    1、在 my.cnf 中增加了 在server下面

    # The MySQL server

    [mysqld]

    port = 3306
    socket = /tmp/mysql.sock
    添加下面一行
    datadir = /var/lib/mysql/

    [safe_mysqld]
    err-log = /var/log/mysqld.log
    pid-file = /var/lib/mysql/localhost.localdomain.pid
    重新启动 mysql成功
    /usr/local/mysql/var/db1.pid 这个文件名字貌似不能随便指定的
    (我指定成了别的是不行的 ,这里的db1是你的hostname)


    2、修改改selinux的 我改了 重新启动机器就行了,以下是SELINUX配置文件
    [root@localhost selinux]# vi config
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    # enforcing - SELinux security policy is enforced.
    # permissive - SELinux prints warnings instead of enforcing.
    # disabled - SELinux is fully disabled.
    #SELINUX=enforcing
    SELINUX=disabled
    # SELINUXTYPE= type of policy in use. Possible values are:
    # targeted - Only targeted network daemons are protected.
    # strict - Full SELinux protection.
    SELINUXTYPE=targeted
    然后重启计算机

    [root@localhost ~]# /etc/init.d/mysql restart

    Shutting down MySQL. [ OK ]

    Starting MySQL.. [ OK ]

    启动完成之后用ps -ef |grep mysql 命令查看是否启动

    [root@localhost mysql-5.5.11]#/mysql –u root –p //client开关参照1.11一文


    2 标准的mysql安装设置

    2.1 设置root帐户的密码

    [root@localhost mysql-5.5.11]#mysql -u root

    >use mysql;

    //设置root的密码为‘123’

    >update user set password=password('123') where user = 'root';

    注意: mysql的用户密码是需要password()函数进行加密的。
    -bash: mysql: command not found 解决办法
    ******************************************

    root@DB-02 ~]# mysql -u root
    -bash: mysql: command not found


    原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
    首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:

    # ln -s /usr/local/mysql/bin/mysql /usr/bin


    ******************************************

     2.2 删除本机匿名连接的空密码帐号

    本机登录mysql

    [root@localhost mysql-5.5.11]#mysql –u root -p

    然后输入上面设置的密码,登录后在mysql的命令行中执行:


    mysql>use mysql; //选择默认数据库mysql

    mysql>update user set password=’root’ where user = '127.0.0.1';

    mysql>delete from user where password="";//不允许root密码为空

    mysql>flush privileges;

    mysql>quit


    容许root用户是远程登录

    对于root账号,如果考虑安全应该新建其他账号用于远程登录,root账号可以不必开启远程登录。不过对于一般使用,没有太多安全需求,允许root用户远程登录可以方便管理,毕竟使用专用管理软件的图形界面在操作方面要方便的多。


    3 实现MySQL远程连接的实际操作流程

    3.1 mysql 数据库端设置

    [root@localhost mysql-5.5.11]#/mysql –u root –p //进入数据库

    mysql>use mysql

    mysql>select user,password,host from user;

    mysql>update user set host = '192.168.%' where user = '127.0.0.1';

    mysql>grant all privileges on *.* to root@'%' identified by "root";//给以root@ip登录的远程连接赋予权限,能够连接数据库。远程无法连接的常见问题原因。

    并把远程登录用户的密码设置为root

    mysql> flush privileges;

    mysql>quit


    3.2 mysql Windows客户端

    下载客户端

    http://js.newhua.com/down/files/mysql-gui-tools-5.0-r17-win32.zip

    mysql官方GUI

    设置用户名root 密码为root //上面刚设置好的密码


    [root@localhost html]# mysql -uroot -p
    Enter password:
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: No)


    无法修改密码

    用 service mysqld stop

    mysqld_safe --skip-grant-tables &

    输入 mysql -uroot -p 回车进入

    >use mysq;

    > update user set password=PASSWORD("newpass")where user="root"; 更改密码为 newpass

    > flush privileges; 更新权限

    > quit 退出

    service mysqld restart 重启数据库

    mysql -uroot -p 新密码进入

    真晕,我也就是让这个搞了半天没有进去mysql,在这里做下记录,一是给自己一个提醒,再者如果那位朋友遇到这问题了也好解决

    [root@sunxia ~]# cat /var/log/mysqld.log
    100705 22:24:04 mysqld started
    100705 22:24:04 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
    100705 22:24:04 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
    /usr/libexec/mysqld: Can't create/write to file '/tmp/ibTXsoen' (Errcode: 13)
    100705 22:24:04 InnoDB: Error: unable to create temporary file; errno: 13
    100705 22:24:04 [ERROR] Can't start server : Bind on unix socket: Permission denied
    100705 22:24:04 [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
    100705 22:24:04 [ERROR] Aborting
    晕死,mysql起不来,在网上找了半天资料,后来才发现Can't start server : Bind on unix socket: Permission denied这句,

    Timeout error occurred trying to start MySQL Daemon.
    启动 MySQL: [失败]
    [root@sunxia ~]# chown -R mysql:mysql /tmp/
    更改权限后起来


    4.最后新建数据库用户并授权
    首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。

    注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
    用户:phplamp 用户数据库:phplampDB

    1.新建用户。

    //登录MYSQL
    @>mysql -u root -p
    @>密码
    //创建用户
    mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
    //刷新系统权限表
    mysql>flush privileges;
    这样就创建了一个名为:phplamp 密码为:1234 的用户。

    然后登录一下。

    mysql>exit;
    @>mysql -u phplamp -p
    @>输入密码
    mysql>登录成功

    2.为用户授权。

    //登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
    @>mysql -u root -p
    @>密码
    //首先为用户创建一个数据库(phplampDB)
    mysql>create database phplampDB;
    //授权phplamp用户拥有phplamp数据库的所有权限。
    >grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
    //刷新系统权限表
    mysql>flush privileges;
    mysql>其它操作

    /*
    如果想指定部分权限给一用户,可以这样来写:
    mysql>grant select,update on phplampDB.* to phplamp@localhost identified by '1234';
    //刷新系统权限表。
    mysql>flush privileges;
    */

    3.删除用户。
    @>mysql -u root -p
    @>密码
    mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
    mysql>flush privileges;
    //删除用户的数据库
    mysql>drop database phplampDB;

    4.修改指定用户密码。
    @>mysql -u root -p
    @>密码
    mysql>update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";
    mysql>flush privileges;

  • 相关阅读:
    0--分析JDK及其他开源框架的初衷
    2.2--RandomAccessFile实现类和它的关联类FileChannel
    2.1--RandomAccessFile实现类的关联类FileChannel类图
    2--IO包DataInput接口类图
    1--UML语言IO包组件图
    跟老齐学Python Django实战 5/n Second edition
    跟老齐学Python Django实战 3/n Second edition
    Vim
    跟老齐学Python Django实战 2/n Second edition
    跟老齐学Python Django实战 1/n Second edition
  • 原文地址:https://www.cnblogs.com/angryprogrammer/p/3688197.html
Copyright © 2011-2022 走看看