多语言展示
当前在线:587今日阅读:103今日分享:49

Install MYSQL from source on rhel 6.4

Install MYSQL from source on rhel6.4    MYSQL 源码安装有多种方式,不同平台上有多种源码安装方式,如Linux中有rpm和tar 其中tar文件类型,其中tar文件类型源码安装优点是可以自定义安装目录及数据文件存放目录安装版本:mysql-5.6.22.tar.gz系统版本:rhel 6.4安装步骤:1:MYSQL版本介绍2:MYSQL对操作系统要求3:如何选择MYSQL安装包4:MYSQL source 安装系统所需包5:官网安装步骤(用来参考)6:MYSQL安装7:MYSQL安装后设置8:设置MYSQL自动关闭和开启9:启动报错查看9:MYSQL用户管理
方法/步骤
1

MYSQL版本介绍MySQL Enterprise Edition (commercial)   商业企业版MySQL Cluster CGE (commercial)            商业集群MySQL Community Edition (GPL)             GPL社区版本(免费) 可供下载

2

MYSQL对操作系统要求从图片可以看到MYSQL 5.6 可以安装在rhel 6.4 上

4

MYSQL source 安装系统所需包CMake 用来创建结构gcc*   GNU编译器Perl    运行测试脚本[root@mysql5 lib64]# mount -o loop rhel-server-6.4-x86_64-dvd.iso iso/[root@mysql5 lib64]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/sda3              47G  6.7G   38G  16% /tmpfs                 940M   72K  940M   1% /dev/shm/dev/sda1             194M   32M  153M  18% /boot/zxx_software/rhel-server-6.4-x86_64-dvd.iso                      3.5G  3.5G     0 100% /zxx_software/iso[root@mysql5 Packages]# rpm -qa | grep cmake  检查包是否安装[root@mysql5 Packages]# ll | grep cmake-r--r--r--.  67 root root  5356828 Aug 17  2010 cmake-2.6.4-5.el6.x86_64.rpm[root@mysql5 Packages]# rpm -Uvh cmake-2.6.4-5.el6.x86_64.rpmwarning: cmake-2.6.4-5.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEYPreparing...                ########################################### [100%]   1:cmake                  ########################################### [100%]gcc 涉及的关联包较多,采用yum安装如何配置yum源参考我的经验:http://jingyan.baidu.com/article/59a015e340de67f7948865bc.html以下是所需包:gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libtool *

5

官网安装步骤(用来参考)如果下载的是rpm 源码包,安装命令:shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm如果下载的是tar源码包,使用以下命令:# Preconfiguration setupshell> groupadd mysql            shell> useradd -r -g mysql mysql        # Beginning of source-build specific instructionsshell> tar zxvf mysql-VERSION.tar.gzshell> cd mysql-VERSION       进入解压目录shell> cmake .                       shell> makeshell> make install# End of source-build specific instructions# Postinstallation setupshell> cd /usr/local/mysqlshell> chown -R mysql .shell> chgrp -R mysql .shell> scripts/mysql_install_db --user=mysqlshell> chown -R root .shell> chown -R mysql datashell> bin/mysqld_safe --user=mysql &# Next command is optionalshell> cp support-files/mysql.server /etc/init.d/mysql.server注意: 以下可以查看MYSQL编译环境shell> cd mysql-VERSION  进入解 压目录shell> cmake . -L   # overviewshell> cmake . -LH  # overview with help textshell> cmake . -LAH # all params with help textshell> ccmake .     # interactive display

6

MYSQL安装1:创建用户[root@mysql5 zxx_software]# useradd -r -g mysql -m mysql[root@mysql5 zxx_software]# id mysqluid=496(mysql) gid=500(mysql) groups=500(mysql)2:创建目录[root@mysql5 zxx_software]# mkdir -p /u01/mysql5.6.22/data[root@mysql5 zxx_software]# chown -R mysql:mysql /u01/[mysql@mysql5 mysql5.6.22]$ mkdir etc   配置文件[mysql@mysql5 mysql5.6.22]$ mkdir sock   socket文件/u01/mysql5.6.22/ 为MYSQL安装目录/u01/mysql5.6.22/data 为MYSQL数据文件目录3:解压MYSQL并CMAKE [root@mysql5 zxx_software]# lltotal 3665504dr-xr-xr-x. 12 root root       8192 Jan 31  2013 iso-rw-r--r--.  1 root root   33115516 Jan 13 04:02 mysql-5.6.22.tar.gz-rw-r--r--.  1 root root 3720347648 Jan 13 03:34 rhel-server-6.4-x86_64-dvd.iso[root@mysql5 zxx_software]# tar zxvf mysql-5.6.22.tar.gz[root@mysql5 zxx_software]# lltotal 3665508dr-xr-xr-x. 12 root root        8192 Jan 31  2013 isodrwxr-xr-x. 33 7161 wheel       4096 Nov 21 13:40 mysql-5.6.22-rw-r--r--.  1 root root    33115516 Jan 13 04:02 mysql-5.6.22.tar.gz-rw-r--r--.  1 root root  3720347648 Jan 13 03:34 rhel-server-6.4-x86_64-dvd.iso[root@mysql5 zxx_software]# cd mysql-5.6.22   进入解压目录[root@mysql5 mysql-5.6.22]# pwd/zxx_software/mysql-5.6.22在解压目录下执行:cmake -DCMAKE_INSTALL_PREFIX=/u01/mysql5.6.22 \-DSYSCONFDIR=/u01/mysql5.6.22/etc \-DMYSQL_DATADIR=/u01/mysql5.6.22/data \-DMYSQL_TCP_PORT=3306 \-DMYSQL_UNIX_ADDR=/u01/mysql5.6.22/sock/mysqld.sock \-DMYSQL_USER=mysql \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DEXTRA_CHARSETS=all \-DWITH_SSL=system \-DWITH_EMBEDDED_SERVER=1 \-DENABLED_LOCAL_INFILE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_PERFSCHEMA_STORAGE_ENGINE=1如果cmake失败,可能是没有安装gcc-c++包,失败后直接删除(在解压目录下):[root@mysql5 mysql-5.6.22]# rm  CMakeCache.txt删除之后安装gcc-c++包,重新cmake4:编译[root@mysql5 mysql-5.6.22]# make注意:如果编译失败,如下:[ 59%] Building CXX object sql/CMakeFiles/sql.dir/mysqld.cc.o/zxx_software/mysql-5.6.22/sql/mysqld.cc: In function ?.oid handle_connections_sockets()?./zxx_software/mysql-5.6.22/sql/mysqld.cc:6322: error: invalid conversion from ?.ize_socket*?.to ?.ocklen_t*?/zxx_software/mysql-5.6.22/sql/mysqld.cc:6322: error:   initializing argument 6 of ?.YSQL_SOCKET inline_mysql_socket_accept(const char*, uint, PSI_socket_key, MYSQL_SOCKET, sockaddr*, socklen_t*)?make[2]: *** [sql/CMakeFiles/sql.dir/mysqld.cc.o] Error 1make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2make: *** [all] Error 2需要执行以下步骤:1):清除之前cmake和编译[root@mysql5 mysql-5.6.22]# make clean[root@mysql5 mysql-5.6.22]# rm CMakeCache.txt2):删除系统自带MYSQL安装软件[root@mysql5 Packages]# rpm -qa | grep mysqlmysql-devel-5.1.66-2.el6_3.x86_64mysql-5.1.66-2.el6_3.x86_64mysql-libs-5.1.66-2.el6_3.x86_64[root@mysql5 Packages]# rpm -e --nodeps --allmatches mysql [root@mysql5 Packages]# rpm -qa | grep mysqlmysql-devel-5.1.66-2.el6_3.x86_64mysql-libs-5.1.66-2.el6_3.x86_64rpm -e --nodeps --allmatches mysql 表示:删除mysql client和server包但不删除他们所关联的包3):重新cmake和make5:安装[root@mysql5 mysql-5.6.22]# make install安装成功之后查看参数[root@mysql5 mysql-5.6.22]# cmake . -L-- Running cmake version 2.6.4-- MySQL 5.6.22-- Packaging as: mysql-5.6.22-Linux-x86_64-- HAVE_VISIBILITY_HIDDEN-- OPENSSL_INCLUDE_DIR = /usr/include-- OPENSSL_LIBRARY = /usr/lib64/libssl.so-- CRYPTO_LIBRARY = /usr/lib64/libcrypto.so-- OPENSSL_MAJOR_VERSION = 1-- SSL_LIBRARIES = /usr/lib64/libssl.so;/usr/lib64/libcrypto.so;dl-- Using cmake version 2.6.4

7

MYSQL安装后设置    在类UNIX系统中安装MYSQL后,必须初始化授权表、启动服务并确认服务工作正常,设置开机服务自启动,关机服务自关闭,对授权表分配密码给账户在类UNIX系统中,授权表设置使用mysql_install_db程序,有一些安装方法已经自动运行该程序:  rpm 安装方式自动运行  原生包安装在Debian Linux, Ubuntu Linux, Gentoo Linux上,建议运行mysql_install_db(以上安装就是)  OS X 使用DMG版本自动运行mysql_install_db  其他平台的安装方式,包括二进制和源码安装,建议运行mysql_install_dbshell> cd BASEDIR  切换到安装目录目录下有两个重要bin(需要配置路径)和scripts(mysql_install_db所在)1:权限设置如果是使用mysql用户安装不需要进行权限操作,如果是root用户安装进入mysql安装目录:shell> chown -R mysql .shell> chgrp -R mysql .2:执行mysql_install_db如果是root用户执行,必须加上--user参数shell> scripts/mysql_install_db --user=mysql如果需要改变目录:shell> scripts/mysql_install_db --user=mysql \         --basedir=/opt/mysql/mysql \         --datadir=/opt/mysql/mysql/data3:建议安装目录为root权限,data目录为mysqlshell> chown -R root .shell> chown -R mysql data4:如果使用插件的话SELECT ... INTO DUMPFILE 使用插件plugin_dir 或者在启动文件中使用--secure-file-priv5:如果你想从 support-files 复制一份标准配置,需要复制到 /etc/my.cnf, or /etc/mysql/my.cnf 进行相关编辑,如果不进行复制,mysql会使用默认配置,如果想配置开机自启动,需要将you can copy support-files/mysql.server to the location where your system has its startup files6:启动MYSQL 服务shell> bin/mysqld_safe --user=mysql &If the command fails immediately and prints mysqld ended, look for information in the error log (which by default is the host_name.err file in the data directory).If you neglected to create the grant tables by running mysql_install_db before proceeding to this step, the following message appears in the error log file when you start the server:mysqld: Can't find file: 'host.frm'This error also occurs if you run mysql_install_db as root without the --user option. Remove the datadirectory and run mysql_install_db with the --user option as described previously.7:使用mysqladmin确认mysql是否在运行[root@mysql5 mysql5.6.22]# bin/mysqladmin version8:关闭mysql服务shell> bin/mysqladmin -u root shutdown9:为了确定MYSQL服务能够再次启动,再次执行shell> bin/mysqld_safe --user=mysql &10:验证能够查询到服务信息[root@mysql5 mysql5.6.22]# bin/mysqlshow+--------------------+|     Databases      |+--------------------+| information_schema || mysql              || performance_schema || test               |+--------------------+11:MYSQL 标准套件sql-bench  you can use to compare how MySQL performs on different platforms.-----------------------------------------------------------------------------以上是官网建议make install后步骤,下面是我的步骤:[root@mysql5 mysql5.6.22]# cd /u01/mysql5.6.22 切换到MYSQL安装目录[root@mysql5 mysql5.6.22]# chown -R mysql .[root@mysql5 mysql5.6.22]# chgrp -R mysql .[root@mysql5 mysql5.6.22]# scripts/mysql_install_db --user=mysql[root@mysql5 mysql5.6.22]# chown -R root .[root@mysql5 mysql5.6.22]# chown -R mysql data[root@mysql5 mysql5.6.22]# bin/mysqld_safe --user=mysql &[1] 19332[root@mysql5 mysql5.6.22]# 150126 06:09:58 mysqld_safe Logging to '/u01/mysql5.6.22/data/mysql5.6.err'.150126 06:09:58 mysqld_safe Starting mysqld daemon with databases from /u01/mysql5.6.22/data [root@mysql5 mysql5.6.22]# jobs[1]+  Running                 bin/mysqld_safe --user=mysql &[root@mysql5 mysql5.6.22]# ps -ef | grep mysqld 查看是否启动root     19332  2357  0 06:09 pts/1    00:00:00 /bin/sh bin/mysqld_safe --user=mysqlmysql    19422 19332  0 06:09 pts/1    00:00:00 /u01/mysql5.6.22/bin/mysqld --basedir=/u01/mysql5.6.22 --datadir=/u01/mysql5.6.22/data --plugin-dir=/u01/mysql5.6.22/lib/plugin --user=mysql --log-error=/u01/mysql5.6.22/data/mysql5.6.err --pid-file=/u01/mysql5.6.22/data/mysql5.6.pidroot     19474  2357  0 06:17 pts/1    00:00:00 grep mysqld

8

设置MYSQL自动关闭和开启mysqld服务启动方式1:调用bin/mysqld 适用任何平台2:调用bin/mysqld_safe 适用于UNIX或者Linux3:调用bin/mysql.server. 主要用于系统启动关闭时(/etc/init.d ), where it usually is installed under the name mysql. mysql.server 启动MYSQL还是通过调用 bin/mysqld_safe 手动启动和关闭MYSQL服务语句:shell> mysql.server startshell> mysql.server stop关闭也可以调用:mysqladmin shutdown.如果需要配置MYSQL自动启动和关闭,需要添加上面启动和关闭命令语句到/etc/rc*如果MYSQL通过rpm安装,mysql.server脚本在/etc/init.d,If you install MySQL from a source distribution or using a binary distribution format that does not installmysql.server automatically, mysql.server脚本在support-files shell> cp mysql.server /etc/init.d/mysqlshell> chmod +x /etc/init.d/mysqlshell> cd /etcshell> ln -s rc.d/init.d .因为旧的rhel使用/etc/rc.d/init.d比/etc/init.d更多,需要创建link ,/etc/init.d 指向/etc/rc.d/init.d:shell> chkconfig --add mysqlshell> chkconfig --level 345 mysql on-----------------------------------------------------------------以下是我的操作:[root@mysql5 mysql5.6.22]# support-files/mysql.server stop 关闭MYSQL[root@mysql5 mysql5.6.22]# support-files/mysql.server start 启动MYSQL[root@mysql5 etc]# ll | grep init.dlrwxrwxrwx.  1 root root     11 Jan 12 07:00 init.d -> rc.d/init.d   link已经存在[root@mysql5 etc]# cp /u01/mysql5.6.22/support-files/mysql.server /etc/init.d/mysql  复制[root@mysql5 etc]# chmod +x /etc/init.d/mysql[root@mysql5 etc]# chkconfig --add mysql[root@mysql5 etc]# chkconfig --level 345 mysql on

9

启动报错查看shell> tail host_name.errshell> tail host_name.log

10

MYSQL用户管理执行完mysql_install_db之后,mysql可以通过root登录和匿名登录[root@mysql5 mysql5.6.22]# bin/mysql -u root  root登录[root@mysql5 mysql5.6.22]# bin/mysql        匿名登录mysql> select user,host,password from mysql.user;+------+-----------+----------+| user | host      | password |+------+-----------+----------+| root | localhost |          || root | mysql5.6  |          || root | 127.0.0.1 |          || root | ::1       |          ||      | localhost |          ||      | mysql5.6  |          |+------+-----------+----------+(1)设置root密码三种方式1:SET PASSWORD2:UPDATE3:mysqladmin1:SET PASSWORD shell> mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd');mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');2:UPDATE shell> mysql -u rootmysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')    ->     WHERE User = 'root';mysql> FLUSH PRIVILEGES; 3:mysqladminshell> mysqladmin -u root password 'newpwd'shell> mysqladmin -u root -h host_name password 'newpwd'2:匿名账号设置密码shell> mysql -u root -pEnter password: (enter root password here)mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');或者shell> mysql -u root -pEnter password: (enter root password here)mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')    ->     WHERE User = '';mysql> FLUSH PRIVILEGES; 删除匿名账号:shell> mysql -u root -pEnter password: (enter root password here)mysql> DROP USER ''@'localhost';mysql> DROP USER ''@'host_name';3:test库操作 If you want to remove any-user access to test databasesshell> mysql -u root -pEnter password: (enter root password here)mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';mysql> FLUSH PRIVILEGES; if you do not want the database to exist at all, drop itmysql> DROP DATABASE test;

推荐信息