记录下安装过程而已
一、概述
有很多种情况和方法,需要具体问题具体分析,那如何分析呢?
很简单啊,官网文档上有各种情况下(不同OS、不同安装方式等等)的安装介绍。(5.6地址)
二、步骤
环境说明:
OS:CentOS7.0 64位
版本:我安装的是Generic Binaries版本,它的文件名一般是这样:
mysql-VERSION-OS.tar.gz
。
具体来说我的是:mysql-5.6.32-linux-glibc2.5-x86_64.tar.gz
;
地址:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.32-linux-glibc2.5-x86_64.tar.gz;
官网所有类型版本地址点这里;可以使用
wget
下载;
安装路径:
/apps/mysql
具体步骤:
第一步,先检查是否已经安装过了,如果安装过了就要删除掉,可以使用
yum list installed
来看有没有yum
安装过MySQL
,如果是不是yum
安装,那可以按照文件名全局find
搜索试试。注意,
mariadb
(MySQL的纯开源版)也不能有,要删除;例如,阿里云上新建的CentOS7.0默认就有
使用yum remove mariadb-libs.x86_64
删除之。有可能还遗留有配置文件等也删除了,比如
/etc/my.cnf
或者/etc/mysql
等。
接下来,因为MySQL依赖
libaio
库,所以这个也必须有,也是跟1一样看装过没,如果没有就yum install libaio
安装。创建一个专门管理数据库的Linux用户组和一个用户:
# 创建组,名字叫mysql吧 [root@i123321Z local]# groupadd mysql # 创建用户,名叫mysql,这个用户没有自己的目录,登录后不能执行shell命令。useradd 是添加用户到/etc/passwd中;-r是系统账号;-g 指定组;-s /bin/false 指定登录后使用的shell为这个(通常是/bin/bash),所以不能执行shell命令; [root@i123321Z local]# useradd -r -g mysql -s /bin/false mysql
解压:首先将
tar
包解压在/apps
下,然后将那么长的文件名替换为mysql
[root@i123321Z local]# tar -zxf mysql-5.6.32-linux-glibc2.5-x86_64.tar.gz -C /apps [root@i123321Z local]# cd /apps [root@i123321Z apps]# mv mysql-5.6.32-linux-glibc2.5-x86_64 mysql
配置文件
MySQL安装/启动时从哪里获取配置信息?
先说下启动方式,基本上我们需要两种,一是用户手动启动的;二是Linux开机启动的;
无论哪种启动,启动脚本/可执行文件都需要你告诉它配置信息,有两种方式:命令行参数:长期使用的设置选项尽量不用命令行,因为命令行存在不确定,漏掉参数等问题;
配置文件:通常,这是我们最常用的方式;
系统如何知道配置文件的位置:
类UNIX 系统中,我已知的寻找优先级从先到后如下:- 使用安装、启动等命令时可以加上
--defaults-file
参数指定配置文件位置; - 默认寻找的位置:
- CentOS在
/etc/my.cnf
; - Debian、Ubuntu在
/etc/mysql/my.cnf
;
- CentOS在
- 安装过后会自动在安装目录生成
mysql安装目录/my.cnf
,之后启动之类命令也会来这里读;
- 使用安装、启动等命令时可以加上
我们这样做,去
/apps/mysql/support-files/my-default.cnf
拷贝一份放在系统需要的目录并重命名,我这里是/etc/my.cnf
,修改如下选项:[mysqld] #安装目录 basedir = /apps/mysql #数据目录:这里看大家自己的需要了 datadir = /data/mysql # 下面是一些可选项 # 支持emoji,server编码为utf8mb4 # 这里设置之后,新建database、table也会将其作为默认 character_set_server = utf8mb4 # result set和error message返回给客户端时编码 # character_set_results = utf8mb4 # character_set_database和collation_database不要设置,创建database时手动指定最好 # character_set_database= # collation_database=
安装
[root@i123321Z apps]# cd mysql ##因为想要让用户mysql来安装MySQL,所以改变mysql目录的所有者、所属组 [root@i123321Z mysql]# chown -R mysql . [root@i123321Z mysql]# chgrp -R mysql . ##安装强调内容:必须在scripts上层目录安装!!!(如果有报错,看博客最下边TIPS) [root@i123321Z mysql]# scripts/mysql_install_db --user=mysql ##安装完后,再让当前目录(.即mysql目录)属于root,然后只让数据目录属于用户mysql [root@i123321Z mysql]# chown -R root . [root@i123321Z mysql]# chown -R mysql /data/mysql
启动
#不要使用mysqld而使用mysqld_safe来启动(启动报错,看博客最后的TIPS) [root@i123321Z mysql]# bin/mysqld_safe --user=mysql &
以上,已经安装和启动好了MySQL5.6,但是还有一些可选项,也很重要;
重要可选项
#1. 随机启动:::将mysql的启动shell文件放在OS启动目录,并加入chkconfig配置启动(脚本中默认2345级别) [root@i123321Z mysql]# cp support-files/mysql.server /etc/init.d/mysql.server [root@i123321Z mysql]# chkconfig --add mysql.server #2. 设置root用户的密码 [root@i123321Z mysql]# bin/mysqladmin -u root password '你的密码' #3. 将`mysql可执行文件`做一份软链接放入/usr/bin/,以使我们可以在任意位置使用mysql来连接mysql服务器 [root@i123321Z bin]# ln -s /apps/mysql/bin/mysql /usr/bin/mysql #另外,如果在生产环境安装MySQL,可以使用mysql_secure_installation来安装,可以让你使用很多初始化参数、不创建测试database等 [root@i123321Z mysql]# bin/mysql_secure_installation
TIPS
创建一个MySQL用户,用来远程连接,并授权某个数据库的完整权限(权限列表)给他:
-- %代表任意主机 mysql> Create user '用户名'@'%' identified by '密码'; mysql> grant all privileges on testdb.* to '用户名'@'%';
解释下授权语句格式:
-- 大写的固定的,小写的是要自定义的 -- privileges:权限,有很多,必须SELECT、UPDATE等,全部权限用 ALL PRIVILEGES 表示; -- databasename.tablename:就是指定什么库、什么表了。全部表和库用 *.*表示; -- 如果想让被授权者还能给其它用户授权的话,可以在最后加上 WITH GRANT OPTION; GRANT privileges ON databasename.tablename TO 'username'@'host';
MySQL是以
Host + User
来确定用户的,可以从mysql.user
表的创建语句证明:... PRIMARY KEY (Host,User) ...
,所以,下面两个语句是两个账户:grant all privileges on *.* to 'root'@'192.168.1.1' identified by 'test'; grant all privileges on *.* to 'root'@'192.168.1.2' identified by 'test';
安装时报错:
FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db:Data::Dumper
,说明缺少perl模块。解决方案:
#安装 perl-module yum install -y perl-Module-Install.noarch
启动时报错:
touch: cannot touch ‘/var/log/mariadb/mariadb.log’: No such file or directory
,出现类似这些语句是说明你的Linux上有mariadb
相关软件。解决方案:
删除mariadb
相关软件,用yum
删或者找到文件删。