zoukankan      html  css  js  c++  java
  • linux下MySQL安装及设置

    MySQL有两种安装方式:源码包安装和二进制包安装。

    这两种方式各有特色:二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及 包格式,安装简单方便;源码包则必须先配置编译再安装,可以根据你所用的主机环境进行优化,选择最佳的配置值,安装定制更灵活。

    一、Mysql源码安装

    下载地址:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

    Linux下MySQL源码安装(eg:mysql-5.6.27.tar.gz ):

    yum install -y perl-Module-Install.noarch

    网址:

    https://cmake.org/download/

    ftp://invisible-island.net/ncurses/

    http://ftp.kaist.ac.kr/mysql/Downloads/

    环境:

    mysql-5.6.27.tar.gz   

    CentOS release 6.5 (Final)

    2:若未安装,安装cmake:

    1. [root@tsxs installfiles]# tar zxvf cmake-3.3.2.tar.gz   
    2. [root@tsxs installfiles]# cd cmake-3.3.2  
    3. [root@tsxs cmake-3.3.2]# ls  
    4. Auxiliary  CMakeCPack.cmake CMakeGraphVizOptions.cmake  CMakeLogo.gif   
    5. CompileFlags.cmake  CONTRIBUTING.rst  CTestConfig.cmake DartConfig.cmake  Help   
    6. Modules  Source Tests bootstrap  CMakeCPackOptions.cmake.in  CMakeLists.txt  
    7. cmake_uninstall.cmake.in  configure Copyright.txt CTestCustom.cmake.in doxygen.config  
    8. Licenses  README.rst  Templates  Utilities  
    9. [root@tsxs cmake-3.3.2]# ./bootstrap   
    10. [root@tsxs cmake-3.3.2]# make   
    11. [root@tsxs cmake-3.3.2]# make install  

    测试:输入有关cmake的使用命令: 

    注:CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。 可以一次:make && make install

    1. [root@tsxs installfiles]# cmake --version  
    2. [root@tsxs installfiles]# cmake --help  
    数据库添加用户和组:
    1. 查看是否存在MySQL组:  
    2. [root@tsxs home]# grep mysql /etc/group  
    3. 不存在创建MySQL组:  
    4. [root@tsxs home]# groupadd mysql  
    5. 查看是否存在MySQL用户:  
    6. [root@tsxs home]# grep mysql /etc/passwd  
    7. 不存在创建MySQL用户:  
    8. [root@tsxs ~]# useradd mysql -g mysql -M -s /sbin/nologin   
    9. 检查:  
    10. [root@tsxs sbin]# grep mysql /etc/passwd  
    11. mysql:x:500:500::/home/mysql:/sbin/nologin  
    12. 使用groups查看用户mysql所在的组  
    13. [root@tsxs sbin]# groups mysql  
    14. mysql : mysql  

    注:-g:指定新用户所属的用户组(group); -M:不建立根目录;-s:定义其使用的shell,/sbin/nologin代表用户不能登录系统。

    注:也可以:

    1. [root@Master home]# useradd mysql -g mysql -d /usr/local/mysql -s /bin/sh  
    如果有,请修改:
    1. [root@tsxs bin]# usermod -s /bin/sh -d /usr/local/mysql -g mysql mysql  

     -d:用户的登录主目录/usr/local/mysql,-s用户的登录Shell是/bin/sh

    可查看:[root@tsxs bin]# vim /etc/passwd

    mysql:x:500:500::/usr/local/mysql:/bin/sh

    解压:

    1. [root@tsxs installfiles]# tar zxvf mysql-5.6.27.tar.gz    
    2. [root@tsxs installfiles]# cd mysql-5.6.27  
    3. [root@tsxs mysql-5.6.27]# ls  
    4. BUILD  cmake  config.h.cmake  dbug extra             
    5. INSTALL-WIN-SOURCE  libmysqld mysql-test  packaging  regex  
    6. sql-bench strings  unittest win BUILD-CMAKE    
    7. CMakeLists.txt  configure.cmake  Docs include libevent  
    8. libservices  mysys  plugin scripts  sql-common  support-files   
    9. VERSION zlib client cmd-line-utils COPYING Doxyfile-perfschema  
    10. INSTALL-SOURCE libmysql man mysys_ssl README sql storage tests vio  

    准备安装目录:

    安装MySQL目录:/usr/local/mysql 

    1. [root@tsxs local]# mkdir -p /usr/local/mysql  
    MySQL数据库目录:/data
    1. [root@tsxs /]# mkdir /data    

    注:-p参数:如果一个目录的父目录不存在,就创建它

    编译源代码:

    [root@tsxs mysql-5.6.27]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

    1. cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_bin -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1  
    注:MySQL安装目录
    1. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql     
    2. MySQL数据库存放目录       
    3. -DINSTALL_DATADIR=/data    
    4. 使用utf8字符         
    5. -DDEFAULT_CHARSET=utf8        
    6. 校验字符                    
    7. -DDEFAULT_COLLATION=utf8_bin       
    8. 安装所有扩展字符集         
    9. -DEXTRA_CHARSETS=all        
    10. 允许从本地导入数据                        
    11. -DENABLED_LOCAL_INFILE=1    
    注:-D 标志这种特性为大多数编译器所支持,是传递给编译器的主要参数,绝对路径
    编译源代码:
    1. [root@tsxs mysql-5.6.27]# make  
    安装:
    1. [root@tsxs mysql-5.6.27]# make install  

    也可一次:make && make install

    注:

    1. [root@Master /]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_bin -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1  
    2. [root@Master /]# make && make install  
    3. [root@Master mysql]# ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data --user=mysql  

    注:初始化日志,为下,则初始化成功:附件日志1!

    安装完毕,查看安装目录 eg:/usr/local/mysql :
    1. [root@tsxs mysql]# ls  
    2. bin  COPYING  data  docs  include  INSTALL-BINARY  lib  man  mysql-test  README  scripts  share  sql-bench  support-files  
    初始化MySQL数据库(在安装目录下)
    1. [root@tsxs mysql]# ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data --user=mysql  
    设置,配置文件,copy(在安装目录下):
    1. [root@tsxs support-files]# cp -R my-default.cnf /etc/my.cnf  

    设置启动服务(在安装目录下)

    1. [root@Master support-files]# cp -R mysql.server /etc/rc.d/init.d/mysqld  
    更改权限(涉及到MySQL数据库的文件和目录都属于mysql用户):

    注:不仅减少了root用户的登录和管理时间,同样也提高了安全性。注:chown在授权目录下,执行:

    1. [root@tsxs /]# chown -R mysql.mysql /data  
    2. [root@Master mysql]# pwd  
    3. /usr/local/mysql  
    4. [root@Master mysql]# chown -R mysql.mysql /usr/local/mysql/  
    5. [root@tsxs etc]# chown -R mysql.mysql /etc/my.cnf  
    6. [root@tsxs init.d]# chown -R mysql.mysql mysqld   
    启动MySQL服务:
    1. [root@tsxs bin]# ./mysqld_safe --user=mysql &  
    或者:
    1. [root@tsxs bin]# service mysqld start  
    2. Starting MySQL SUCCESS!   
    3. [root@tsxs bin]# service mysqld restart  
    4. Shutting down MySQL. SUCCESS!   
    5. Starting MySQL. SUCCESS!   
    6. [root@tsxs bin]# service mysqld stop  
    7. Shutting down MySQL. SUCCESS!   
    如果使用MySQL的一些命令需要配置,将这些命令加入到系统环境变量,让他生效::

    MySQL的命令目录:

    1. [root@tsxs ~]# cd /usr/local/mysql/bin/  
    1. [root@tsxs init.d]# vim /etc/profile  
    1. #MySQL  
    2. export MYSQL_HOME=/usr/local/mysql  
    3. export PATH=$MYSQL_HOME/bin:$PATH  
    1. [root@tsxs init.d]# source /etc/profile  
    启动MySQL客户端client,并修改配置文件:

    在下边MySQL配置文件加入客户端,登陆信息:

    1. [root@tsxs bin]# vim /etc/my.cnf  
    1. # The following options will be passed to all MySQL clients  
    2. [client]  
    3. #password       = your_password  
    4. port            = 3306  
    5. socket          = /data/mysql.sock  
    1. # The MySQL server  
    2. [mysqld]  
    3. basedir = /usr/local/mysql  
    4. datadir = /data  
    5. port = 3306  
    6. socket = /data/mysql.sock  
    7. log-error = /data/mysql-error.log  
    8. pid-file = /data/mysql.pid  
    9. user = mysql  
    启动MySQL客户端,第一次未设置密码:
    1. [root@tsxs tmp]# mysql  
    2. Welcome to the MySQL monitor.  Commands end with ; or g.  
    3. Your MySQL connection id is 1  
    4. Server version: 5.6.27 Source distribution  
    5.   
    6. Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.  
    7.   
    8. Oracle is a registered trademark of Oracle Corporation and/or its  
    9. affiliates. Other names may be trademarks of their respective  
    10. owners.  
    11.   
    12. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.  
    13.   
    14. mysql> quit  
    15. Bye  

    设置mysql为开机启动:

    1. [root@Master init.d]# chkconfig --add mysqld   
    2. [root@Master init.d]# chkconfig mysqld on  
    3. [root@Master init.d]# chkconfig --list | grep mysql  
    4. mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off  
    • # rm -f CMakeCache.txt  

    以及安装软件涉及到其他文件,eg:
    # rm -rf /etc/my.cnf

    • [root@tsxs installfiles]# cd ncurses-6.0  
    • [root@tsxs ncurses-6.0]# ls  
    • aclocal.m4  announce.html.in  config.guess  configure.in          dist.mk  include       
    • Makefile.in   MANIFEST  mk-0th.awk  mk-hdr.awk  package  README        test  
    • Ada95       AUTHORS           config.sub    convert_configure.pl  doc      INSTALL       
    • Makefile.os2  menu      mk-1st.awk  ncurses     panel    README.emx    TO-DO  
    • ANNOUNCE    c++               configure     COPYING               form     install-sh    
    • man           misc      mk-2nd.awk  NEWS        progs    README.MinGW  VERSION  
    • 按照你的系统环境制作安装配置文件:
      1. [root@tsxs ncurses-6.0]# ./configure   
      编译源代码并且编译NCURSES库:
      1. [root@tsxs ncurses-6.0]# make  
      安装编译好的NCURSES库:
      1. [root@tsxs ncurses-6.0]# make install  
      检测:
      1. [root@tsxs bin]# man ncurses  
      或在目录:

      /usr/lib下查找是否有libncurses.so或libncurses.a这个库

      问题回答:

      问题1:

      -- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH) 
      CMake Error at cmake/readline.cmake:85 (MESSAGE):
        Curses library not found.  Please install appropriate package,

      解决1:

      安装:ncurses,即可!

      问题2:

      [root@tsxs init.d]# service mysqld start
      Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql.pid).
      [root@tsxs init.d]# service mysqld status
       ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    • # The following options will be passed to all MySQL clients  
    • [client]  
    • #password       = your_password  
    • port            = 3306  
    • socket          = /data/mysql.sock  
    • # The MySQL server  
    • [mysqld]  
    • basedir = /usr/local/mysql  
    • datadir = /data  
    • port = 3306  
    • socket = /data/mysql.sock  
    • log-error = /data/mysql-error.log  
    • pid-file = /data/mysql.pid  
    • user = mysql  
      1. [root@tsxs local]# chown -R mysql.mysql /usr/local/mysql/  
      2. [root@tsxs /]# chown -R mysql.mysql /data  
      3. [root@tsxs etc]# chown -R mysql.mysql /etc/my.cnf  
      4. [root@tsxs init.d]# chown -R mysql.mysql mysqld   

      注:若不能解决请关注:

      1:查看:vim /etc/passwd --->  mysql:x:500:500::/usr/local/mysql:/bin/sh  --->   下mysql用户的权限和路径

      2:是否安装,ncurses-devel和perl-Module-Install.noarch

      3:此原因是因为,/data/mysql.pid文件的创建者为root,所以:关注1很重要!文章尾备注日志2!

      4:查看,安装路径/etc/local/mysql和/data和/etc/my.cnf和启动脚本的拥有者和权限(chown/chomd)

      5:花了好多时间解决问题3,甚至查启动日志,好久,最后发现,重启一下,reboot就好了!

      备注图片1,2:最后!

      问题3:

      Error3:
      [root@tsxs init.d]# mysql
      ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

      解决3:

      问题2的MySQL配置文件client的那个配置加入即可,指定mysql.sock位置!

      错误4:

      [root@Master cmake-3.3.2]# ./bootstrap 
      ---------------------------------------------
      CMake 3.3.2, Copyright 2000-2015 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: /home/installfiles/resourceinstall-mysql/cmake-3.3.2/Bootstrap.cmk/cmake_bootstrap.log
      ---------------------------------------------

      解决4:

      1. [root@Master cmake-3.3.2]# yum -y install gcc-c++  

      问题5:

      [root@Master mysql]# ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data --user=mysql
      FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
      Data::Dumper

      解决5(centos最小安装):

      1. [root@Master scripts]# yum install -y perl-Module-Install.noarch  

      问题6:

      [root@Master init.d]# service mysqld start
      2015-11-08 00:57:58 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
      2015-11-08 00:57:58 0 [Note] /etc/init.d/mysqld (mysqld 5.6.27) starting as process 14599 ...
      mysql启动报错:Segmentation fault

      解决6:

      1. [root@Master data]# yum install -y ncurses-devel  
      注:然后删除:/data和/usr/local/mysql/两个目录,重新解压编译安装!别嫌麻烦!

      或:

      1. [root@Master ~]# vim /etc/my.cnf  
      加入(此法并未解决):
      1. [mysqld]  
      2. explicit_defaults_for_timestamp=true  

      注:

      1. 这是数据库升级过程中,timestamp在5.6以前的数据库中默认not null,如果没有显示声明timestamp的默认值,那么该列用全0的"0000-00-00 00:00:00"作为默认值  
      2. 在5.6中后,时间值是不能为全0格式,添加explicit_defaults_for_timestamp 参数  
      3. 添加之后,timestamp列可以设置默认为空,并且不填充0,如果填充了0,如果SQL_MODE为strict sql则会报错除非显示指定default current_time和on update current_time  
      4. 加入explicit_defaults_for_timestamp=true后,创建表timestamp类型Default值已经默认null了  
    • CMAKE_INSTALL_PREFIX 值是安装的基本目录,其他cmake选项值是不包括前缀,是相对路径名,绝对路径包括 CMAKE_INSTALL_PREFIX:MySQL的安装目 录。如-DINSTALL_SBINDIR=sbin的绝对路径是 /sbin  
    • 注:-D 标志这种特性为大多数编译器所支持,是传递给编译器的主要参数,绝对路径  
    • 2:MySQL存储引擎选项  
    • mysql存储引擎是插件式的,因此插件控制选项可以指定那个存储引擎安装。  
    • configure编译插件选项--with-plugins=csv,myisam,myisammrg,heap,innobase,  
    • archive,blackhole在cmake中没有直接对应的相同选项。对于csv,myisam,myisammrg,heap在cmake中是不需要明确指定存储引擎的名称,因为它们是强制性安装。  
    • 3:可以使用以下选择来安装innodb,archive,blackhole存储引擎  
    • -DWITH_INNOBASE_STORAGE_ENGINE=1  
    • -DWITH_ARCHIVE_STORAGE_ENGINE=1  
    • -DWITH_BLACKHOLE_STORAGE_ENGINE=1  
    • 注:1也可以使用on代替  
    • 如 果既不是-DWITH_<ENGINE>_STORAGE_ENGINE 也不 是 -DWITHOUT_<ENGINE>_STORAGE_ENGINE 来指定存储引擎,该存储引擎将安装成共享模块式的。如果不是共享 模块式的将排除在外。共享模块安装时必须使用INSTALL PLUGIN语句或--plugin-load才可以使用。  
    • 4:其他选项  
    • 之前MySQL的编译选项大多数都支持。新旧版本之间的安装选项映射成大写字母,删除选项前面破折号,中间字符间的破折号替换成下划线。如:  
    • --with-debug => WITH_DEBUG=1  
    • --with-embedded-server => WITH_EMBEDDED_SERVER  
    • 5:调试配置过程  
    • 使用configure编译完将生成config.log和config.status文件。  
    • 使用cmake编译完在CMakeFiles目录下生成CMakeError.log 和CMakeOutput.log文件。  
    • 编译参数参考:
      1. BUILD_CONFIG   采用官方发行版一致的编译参数  
      2. CMAKE_BUILD_TYPE 指定产品编译说明信息   RelWithDebInf  
      3. CMAKE_INSTALL_PREFIX 指定MySQL安装路径  /usr/local/mysql  
      4. CPACK_MONOLITHIC_INSTALL是否建立单个安装包文件 OFF   5.6.7  
      5. DEFAULT_CHARSET  MYSQL 默认字符集  latin1   5.6.7  
      6. DEFAULT_COLLATION MYSQL 默认排序字符集  latin1_swedish_ci 5.6.7  
      7. ENABLE_DEBUG_SYNC 是否启用同步调试功能  ON   5.6.7  
      8. ENABLE_DOWNLOADS 是否下载可选文件  OFF   5.6.7  
      9. ENABLE_DTRACE  是否包含 DTrace 支持     5.6.7  
      10. ENABLE_GCOV  是否包含 Gcov 支持     5.5.14  
      11. ENABLED_LOCAL_INFILE 是否启用本地 LOAD DATA INFILE OFF   5.6.7  
      12. ENABLED_PROFILING 是否启用代码查询分析  ON   5.6.7  
      13. INSTALL_BINDIR  MySQL 主执行文件目录  PREFIX/bin  5.6.7  
      14. INSTALL_DOCDIR  文档安装路径   PREFIX/docs  5.6.7  
      15. INSTALL_DOCREADMEDIR 自述文件目录   PREFIX   5.6.7  
      16. INSTALL_INCLUDEDIR 头文件目录   PREFIX/include  5.6.7  
      17. INSTALL_INFODIR  关于信息文件目录  PREFIX/docs  5.6.7  
      18. INSTALL_LAYOUT  选择预定义的安装  STANDALONE  5.6.7  
      19. INSTALL_LIBDIR  库文件目录   PREFIX/lib  5.6.7  
      20. INSTALL_MANDIR  手册页面目录   PREFIX/man  5.6.7  
      21. INSTALL_MYSQLSHAREDIR 共享数据目录   PREFIX/share  5.6.7  
      22. INSTALL_MYSQLTESTDIR mysql-test 目录   PREFIX/mysql-test 5.6.7  
      23. INSTALL_PLUGINDIR 插件目录   PREFIX/lib/plugin 5.6.7  
      24. INSTALL_SBINDIR  服务器超级用户执行文件目录 PREFIX/bin  5.6.7  
      25. INSTALL_SCRIPTDIR 脚本目录   PREFIX/scripts  5.6.7  
      26. INSTALL_SHAREDIR aclocal/mysql.m4 安装目录 PREFIX/share  5.6.7  
      27. INSTALL_SQLBENCHDIR sql-bench 性能测试工具目录 PREFIX   5.6.7  
      28. INSTALL_SUPPORTFILESDIR 扩展支持文件目录  PREFIX/support-files 5.6.7  
      29. MYSQL_DATADIR  数据库存放目录      5.6.7  
      30. MYSQL_MAINTAINER_MODE 是否启用MySQL的维护环境  OFF   5.6.7  
      31. MYSQL_TCP_PORT  TCP/IP 端口号   3306   5.6.7  
      32. MYSQL_UNIX_ADDR  Unix Socket 套接字文件  /tmp/mysql.sock  5.6.7  
      33. SYSCONFDIR  选项配置文件目录     5.6.7  
      34. WITH_COMMENT  编译环境发表评论     5.6.7  
      35. WITH_DEBUG  是否包括调试支持  OFF   5.6.7  
      36. WITH_EMBEDDED_SERVER 是否要建立嵌入式服务器  OFF   5.6.7  
      37. WITH_xxx_STORAGE_ENGINE 静态编译xxx 存储引擎到服务器    5.6.7  
      38. WITH_EXTRA_CHARSETS 额外的字符集,包括  all   5.6.7  
      39. WITH_LIBWRAP  是否包括支持libwrap(TCP包装) OFF   5.6.7  
      40. WITH_READLINE  使用捆绑的readline  OFF   5.6.7  
      41. WITH_SSL  是否支持SSL  no   5.6.7  
      42. WITH_ZLIB  是否支持Zlib  system   5.6.7  
      43. WITHOUT_XXX_STORAGE_ENGINE 不编译XXX存储引擎到数据库  
    • 2015-11-15 18:18:41 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.27) starting as process 19263 ...  
    • 2015-11-15 18:18:41 19263 [Note] InnoDB: Using atomics to ref count buffer pool pages  
    • ………………  
    • ………………  
    • The latest information about MySQL is available on the web at  
    •   
    •   http://www.mysql.com  
    •   
    • Support MySQL by buying support/licenses at http://shop.mysql.com  
    •   
    • New default config file was created as /usr/local/mysql/my.cnf and  
    • will be used by default by the server when you start it.  
    • You may edit this file to change server settings  
    • root     14043     1  0 19:30 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data --pid-file=/data/tsxs.pid  
    • mysql    14158 14043  0 19:30 pts/1    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/tsxs.err --pid-file=/data/tsxs.pid  
    • root     14191   958  0 19:35 pts/0    00:00:00 grep mysql  

    • 备注图片1,2:



  • 相关阅读:
    剑指offer2:替换空格
    题目:求第五个人的年龄
    编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n(利用指针函数)
    原创| 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
    编程题30 题目:将一个数组逆序输出。
    编程题32 题目:取一个整数a从右端开始的4~7位。
    编程题31 题目:将一个数组逆序输出。
    daisy的词源
    2018年学习日志
    11
  • 原文地址:https://www.cnblogs.com/zhuiluoyu/p/5453579.html
Copyright © 2011-2022 走看看