源代码及兼容包

源代码包下载:官网 > Downloads > MySQL Community Edition (GPL) > MySQL Community Server (GPL) > Select Platform > Source Code > Generic Linux (Architecture Independent), Compressed TAR Archive (mysql-5.6.29.tar.gz) > Download] > No thanks, just start my download.

兼容包下载:官网 > Downloads > MySQL Community Edition (GPL) > MySQL Community Server (GPL) > Select Platform > Linux Generic > Linux - Generic (glibc 2.5) (x86, 32-bit), RPM Package Compatibility Libraries (MySQL-shared-compat-5.6.29-1.linux_glibc2.5.i386.rpm) > Download > No thanks, just start my download.

官网提供了一系列的兼容包(可在下载页面 Linux Generic 分支中查看),主要是为了解决新版本的 MySQL 向下兼容的问题,比如 MySQL-shared-compat-xxx.rpm 包是为了解决 mysql-libs 与新版 MySQL 冲突的问题。

以 CentOS 6.7 为例,mysql-libs 默认被其他一些软件所依赖,比如 postfix、 crontabs 等。一般,我们在安装前都先使用 rpm -qa | grep mysql 查看系统都已经安装了那些 MySQL 的软件。然后,对这些软件进行卸载后,再进行 MySQL 的安装。但是,当我们使用 yum uninstall mysql-libs 时,会被要求把所依赖的软件包(postfix、 crontabs)一起删除,这并不是我们希望的。因为我们不希望卸载这两款软件,而只是卸载 mysql-libs。

不卸载 mysql-libs,直接安装 MySQL 行不行?根据我的测试结果来看,是不行的。因为 mysql-libs 安装后,默认配置文件会存放在 /etc/my.conf。如果此时,我们把 MySQL 都安装完毕(假如安装目录为默认的 /usr/local/mysql),那么 MySQL 的配置文件会存放在 /etc/usr/local/mysql/my.cnf,根据 mysqld 服务器启动读取配置文件的顺序看(见下表),/etc/my.conf 将会是第一个读取的配置文件,很显然,这会直接影响到 MySQL 的启动和运行。

On Unix, Linux and OS X, MySQL programs read startup options from the following files, in the specified order (top files are read first, later files take precedence). 出处

MySQL 启动时,读取配置文件的顺序如下:

File Name

Purpose

/etc/my.cnf

Global options

/etc/mysql/my.cnf

Global options

SYSCONFDIR/my.cnf

Global options

$MYSQL_HOME/my.cnf

Server-specific options defaults-extra-file The file specified with --defaults-extra-file=file_name, if any

~/.my.cnf

User-specific options

~/.mylogin.cnf

Login path options

那如何才可以实现,即能够满足其他软件对 mysql-libs 的依赖需要,也能够不影响到新安装的 MySQL 呢? 为此,官网提供了 MySQL-shared-compat-xxx.rpm 兼容包,用户可以使用 rpm 或 yum 安装该软件包。对此,官网是这样描述的:

MySQL-shared-compat can safely be installed alongside mysql-libs because libraries are installed to different locations. Therefore, it is possible to install MySQL-shared-compat first, then manually remove mysql-libs before continuing with the installation. After mysql-libs is removed, the dynamic linker stops looking for the client library in the location where mysql-libs puts it, and the library provided by the MySQL-shared-compat package takes over. 出处

安装环境及依赖关系

编译安装时,所需工具:

CMake

gcc >= 4.2.1

make >= 3.75

编译安装时,所需依赖软件包:

ncurses-devel

bison [可选]

自 MySQL 5.5 开始,MySQL 源代码的配置过程不再使用 GUN autotools (Configure),而是使用 CMake工具(参考)。

ncurses-devel 在 MySQL 安装过程中是必须存在的一个库,否则将在执行 cmake 过程中,出现以下错误:

-- 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,

remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.

bison 是可选的一个库,它不会影响到 MySQL 的正常编译和安装过程。该库只要求在安装 MySQL 开发版源代码(development source code)时安装上。但是从我们对 MySQL 源码进行编译的过程当中发现,它在编译完成后报一个警告。把 bison 安装上只是为了防止出现警告,减少不必要的困惑。

Warning: Bison executable not found in PATH

在安装这些工具和软件包前,我们建议先检查该软件包是否已经存在以及版本是否满足

rpm -q PACKAGE

yum list installed | grep PACKAGE

使用 yum 进行安装和更新

yum install PACKAGE

yum update PACKAGE

安装方法

在工具以及依赖软件都安装好后,即可进行安装。下面以以简单的方式展示了整个 MySQL 安装过程,包括了编译安装、初始化数据目录、添加启动脚本。如果你希望修改数据库默认编码为 utf8 等等,稍后我们将会介绍 cmake 的相关参数,以实现更好定制 MySQL 的安装。

# Preconfiguration setup

shell> groupadd mysql

shell> useradd -r -g mysql -s /bin/false mysql

# Beginning of source-build specific instructions

shell> tar zxvf mysql-VERSION.tar.gz

shell> cd mysql-VERSION

shell> cmake .

shell> make

shell> make install

# End of source-build specific instructions

# Postinstallation setup

shell> cd /usr/local/mysql

shell> chown -R mysql .

shell> chgrp -R mysql .

shell> scripts/mysql_install_db --user=mysql

shell> chown -R root .

shell> chown -R mysql data

shell> bin/mysqld_safe --user=mysql &

# Next command is optional

shell> cp support-files/mysql.server /etc/init.d/mysql.server

首先,我们添加了 mysql 用户及用户组,并把 /usr/local/mysql 目录的所有者和所属组都修改为 mysql。创建该用户的目的是为了,我们需要有一个用户启动和管理 mysql 服务器,同时在稍后执行数据目录初始化时,也会以该用户身份执行。

实际上,在数据目录初始化后,我们把 /usr/local/mysql 目录的所有者修改为了 root ,而只是把 /usr/local/mysql/data 的所有者修改为 mysql。那是因为这样的权限设置,就足以满足 mysql 用户对 MySQL 数据库服务器的日常管理.

执行 mysql_install_db 脚本实现数据目录初始化的过程。实际上就是创建 data 目录,并且创建 mysql 系统数据库。该数据库包含了 MySQL 服务器的用户表、权限表等等。同时,在用户表当中,默认已经创建了 root 和 匿名用户(用户名为空),但密码都为空。下面的测试过程,我们会使用到这两个用户。

cmake 是对源代码进行配置的过程,相当于 ./configure。上面示例直接执行 cmake,没有带上任何选项,这是最简单的一个配置方式。当然,我们可以像以下方式,给 cmake 带上选项参数,以定制其行为,更多参数选项请参考:2.9.4 MySQL Source-Configuration Options

cmake . -DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DENABLED_LOCAL_INFILE=1

测试安装结果

首先,可以使用 mysqld_safe 启动 MySQL 数据库:

bin/mysqld_safe --user=mysql &

实际上,mysqld_safe 脚本最终还是调用了 bin/mysqld 来启动 MySQL 数据库。你也可以直接执行 mysqld 进行启动,但是 mysqld_safe 有更多更为安全的特征,它也是官方所推荐的。比如说当 MySQL 服务器发生错误的时候,它会自动重启 MySQL等等。官方文档中这样描述:

mysqld_safe is the recommended way to start a mysqld server on Unix. mysqld_safe adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log file. A description of error logging is given later in this section.

mysqld_safe tries to start an executable named mysqld... 出处

为了测试数据库服务器,我们可以使用以下一些脚本进行:

bin/mysqladmin version

bin/mysqladmin variables

如果你已经为 root 用户设置了密码,那么你应该这样执行:

bin/mysqladmin -u root -p version

Enter password: (enter root password here)

先关闭服务器,然后试着再次重启它,测试它是否运行正常。同样的,如果 root 已经设置过密码,那么应该加上 -p 选项

bin/mysqladmin -u root shutdown

bin/mysqld_safe --user=mysql &

查看数据库,并执行简单的查询脚本,以测试它的数据库能正常访问。

# 查看所有数据库

bin/mysqlshow

# 查看指定数据库 mysql

bin/mysqlshow mysql

# 执行查询操作

bin/mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql

我们看到,MySQL 提供了很多工具脚本,让我们直接管理数据库。那究竟怎么样使用了,你可以查看官方文档:Chapter 4 MySQL Programs。

加强用户账号的安全性

由于 MySQL 服务器安装成功后,默认就创建了 root 和匿名用户,但是他们的密码都是空的。这个当然不是我们所希望的。我们可以通过下面几种方法给他们设置密码:

使用 SET PASSWORD 语法

使用 UPDATE 语法

使用 mysqladmin 客户端命令行工具

比如说,使用 mysqladmin 设置 root 密码:

bin/mysqladmin -u root password "new_password"

而匿名用户,可以使用 root 用户先登录 MySQL 服务器后,再对它使用 UPDATE 语法设置密码:

shell> bin/mysql -u root -p

Enter password: (enter root password here)

mysql> UPDATE mysql.user SET Password = PASSWORD('new_password')

-> WHERE User = '';

mysql> FLUSH PRIVILEGES;

服务开机自启动

我们将通过把 support-files/mysql.server 复制到 /etc/rc.d/init.d/ 系统服务启动脚本目录 下。然后通过 chkconfig 命令,把它设置为随开机自启动等等。下面是操作的方法:

cp support-files/mysql.server /etc/init.d/mysql

chkconfig --add mysql

# 查看开机启动服务列表

chkconfig --list

下次,我们启动和关闭 MySQL 服务器,就可以通过以下命令进行:

service mysql start|stop|status ....

PATH 环境变量

设置环境变量 PATH 主要的作用是能够在 Shell 窗口中,能够直接执行各种各样的 MySQL 管理命令,而不需要每次都写上命令所在的前缀。实现这个目标的方法好多,而这里,我们是希望给所有的用户都可以直接不需要目录前缀就执行命令,那么我们采用在 /etc/profile.d/ 创建脚本文件的方式。

创建 mysql.sh 以支持 Bash Shell:

vi /etc/profile.d/mysql.sh

if ! echo ${PATH} | /bin/grep -q /usr/local/mysql/bin ; then

PATH=/usr/local/mysql/bin:${PATH}

fi

:wq

创建 mysql.csh 支持 C shell 和 Tenex C shell:

vi /etc/profile.d/mysql.csh

if ( "${path}" !~ */usr/local/mysql/bin* ) then

set path = ( /usr/local/mysql/bin $path )

endif

:wq

最后,我们为了能够让这些脚本马上生效,我们可以使用以下脚本实现:

source /etc/profile.d/mysql.sh

此时,你就可以在 Shell 命令行中直接使用 mysql、mysqladmin、mysqlshow 等等命令了。同时,你可以可以使用 man 命令查看帮助文档了:

man mysql

补充几点

启动脚本一共有三种,分别是 mysqld、mysqld_safe、mysql.server,它们各自的作用是不一样的。无论是使用 mysqld_safe 还是 mysql.server,它最终还是通过执行 mysqld 启动 MySQL 的。上面我已经简单解释过 mysqld_safe 与 mysqld 之间的关系,这里就不再多说,其实我的建议是直接看官方手册:4.3 MySQL Server and Server-Startup Programs 说得很明白了。关于 mysql.server 的作用,请参考官方这样一番话:

MySQL distributions on Unix include a script named mysql.server, which starts the server using mysqld_safe. It can be used on systems such as Linux and Solaris that use System V-style run directories to start and stop system services. It is also used by the OS X Startup Item for MySQL. 出处

总结

MySQL 的安装其实比较简单,这得益于官网提供思路非常清晰的安装文档。本文只是希望记录一下在我安装过程中,需要注意的一些地方和思路的整理。有什么不对的地方,也希望大家能够指出,谢谢!

参考文献

centos 6.7 mysql 5.6_CentOS 6.7 安装 MySQL 5.6 思路整理相关推荐

  1. centos7.3允许mysql远程连接_Centos7.3 安装Mysql和远程登录到Mysql-Go语言中文社区

    1.首先在官网https://dev.mysql.com/downloads/mysql/,下载相应rpm文件到Centos本地 我选择的是正式发布版,选择对应的系统版本. 点击download 点击 ...

  2. linux安装mysql后怎么进去_linux安装mysql详细步骤

    最近买了个腾讯云服务器,搭建环境. 该笔记用于系统上未装过mysql的干净系统第一次安装mysql.自己指定安装目录,指定数据文件目录. linux系统版本: CentOS 7.3 64位 安装源文件 ...

  3. linux mysql 建表 ddl,linux安装mysql和mysqlDDL语言

    原标题:linux安装mysql和mysqlDDL语言 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. li ...

  4. 阿里云centos mysql_阿里云ECS服务器CentOS7上安装MySql服务-阿里云开发者社区

    阿里云ECS服务器CentOS7上安装MySql服务 ---------------------------------------------- 使用root登录 1.确保服务器系统处于最新状态 [ ...

  5. centos8.2安装mysql_为CentOS 8操作系统安装MySQL的方法,以安装MySQL 8为例

    在本文中,我们将向你展示如何在CentOS 8操作系统上安装MySQL 8.0,可从默认的CentOS 8存储库中安装最新版本的MySQL数据库服务器8.0版,CentOS 8还提供了MariaDB ...

  6. centos安装mysql卡住_CentOS 6.4安装MySQL的过程中出现的bug

    在CentOS 6.4下安装MySQL,下载一个源码包,感觉很简单,tar,./configure,make,make install 经典四步,弄这个也不是第一次了,但今天就是老出错,首先是./co ...

  7. centos安装mysql怎么远程访问_centos上安装mysql并设置远程访问的操作方法

    1.下载mysql的repo源 2.安装mysql-community-release-el7-5.noarch.rpm包 $ sudo rpm -ivh mysql-community-releas ...

  8. linux7编译mysql5.7安装,CentOS 7.4 使用源码包编译安装MySQL 5.7.20

    使用yum安装的MySQL一般版本比较旧,但是运行稳定.如果想要尝试最新的功能或者需要指定特殊的功能的话,就需要手工进行编译安装了. 一.下载安装包 (一).先下载MySQL源码,网址为:https: ...

  9. Centos下安装MySQL全过程(linux下安装MySQL)

    2019独角兽企业重金招聘Python工程师标准>>> 1.到chinaunix下载mysql 下载地址: http://download.chinaunix.net/downloa ...

最新文章

  1. WEB攻击手段及防御第3篇-CSRF
  2. java 运行环境变量_java 环境变量配置与第一个程序运行
  3. 怎么对Java服务进行调优的?
  4. [高斯消元及理论]线性方程组整数/浮点数,模线性方程组,异或方程组模板
  5. 牛客14607 递推(矩阵快速幂构造)
  6. pcl通过积分图来进行法线预测
  7. 比Java语言更好,为什么Java比其他解释语言具有更好的性能?
  8. Java-字符与字符串的转化
  9. 大规模中文自然语言处理语料(百科,问答、新闻,翻译)
  10. 20201031B组 T3 生命之树
  11. matlab 拉普拉斯金字塔,图像金字塔
  12. mysql报错:1194-table “xxx“ is marked as crashed and should be repaired
  13. 改进YOLOv7的早餐价格检测系统
  14. macOS Big Sur 11.6.6 (20G624) 正式版 ISO、PKG、DMG、IPSW 下载
  15. python中 F “{表达式}”的用法【详细】
  16. 区块链 以太坊 多层调用,获取调用者 msg.sender
  17. 系统进程启动流程分析(一)
  18. linux中bond网卡是什么意思,linux 网卡bond
  19. java 过期数据_TTL过期的数据包丢失
  20. 《机电一体化系统设计》

热门文章

  1. mysql 升序_MySQL“自古以来”都有一个神秘的HANDLER命令
  2. 【Elasticsearch】解决Elasticsearch HTTP方式查询报SocketTimeoutException的问题 Connection reset by peer
  3. 95-10-050-启动-LogManager日志
  4. 【SpringCloud】was unable to refresh its cache! status = Cannot execute request on any known server
  5. 【kafka】produce response correlation id xxx on topic-partition retrying Error: NETWORK_EXCEPTION
  6. Exception in thread “main“ java.util.ConcurrentModificationException
  7. IDEA编译通过能运行但是出现红色下划线
  8. 08-Oracle基本概念
  9. kaffe java_Java虚拟机Kaffe的研究与实现
  10. 大数据是如何基于 Flink 进行实时计算的?