2-14 MySQL初步认识,及CentOS6.8环境,源码方式安装MySQL
什么是数据库: 存放数据的仓库
RDBMS-->(Relational Database Management System) 关系型数据库管理系统
DBMS--->(Database Managerment System) 数据库管理系统
数据库分类:
1. 关系型数据库
2. 非关系型数据库
常用关系型数据库:
Oracle,MySQL,MariaDB,SQL Server,Access,PostgreSQL,DB2,Informix,Sybase
PostgreSQL 自由的对象-关系数据库服务器(数据库管理系统),有非常活跃的开发队伍(黑客支持)
常用非关系型数据库:
Memcache,Redis,MongoDB,Cassandra
其他不常用非关系型数据库:
HBase、MemacheDB、BerkeleyDB、Tokyo Cabinet
##################################################
##################################################
##################################################
MySQL
MySQL是一种关系型数据库管理系统,
由瑞典MySQL AB公司开发,目前属于Oracle公司
特点:
1. mysql性能卓越,服务稳定,很少出现异常宕机
2. mysql开源免费,无版权制约,自主性及使用成本低
3. 产品耦合度,mysql支持多种操作系统,支持多开发语言,特别是php
4. 技术积累,庞大的活跃的社区,
5. 软件体积小,安装简单,易于维护
URL:http://www.mysql.com/
MySQL采用双授权政策
社区版和商业版
又被细分为Alpha,Beta,RC,GA版本
GA为正式版
社区版,企业版区别--->
1. 价格, 社区版免费,企业版高额费用
2. 技术, 企业版具有MySQL企业级服务器,系统监控工具,经过严格的测试认证
社区版没有那么严格
3. 服务, 社区版不提供技术支持,企业版反之
4. 协议, 商业版不支持GPL协议
产品线路:
1. 5.0.XX - 5.1.XX 系列
这条产品线继续完善改进用户体验和性能,
同时增加新功能,是mysql早期产品的延续,
如rhel6自带的mysql
2. 5.4.XX - 5.7.XX 系列
mysql社区和第三方公司percona整合的,
吸收新的算法和存储引擎
3. 6.0.XX - 7.X.XX 系列
主要是为了更好的推广MySQL Cluster版本,
提供Cluster版本的性能和稳定性,
这个版本比较少公司用,原因是出来太晚了
MySQL安装:
Way 1: rpm/yum安装
#使用二进制方式安装,开发商针对不同的操作系统和环境穿件的rpm包,通过下载直接安装
rpm -ivh *.rpm
yum -y install mysql-server
# mysql 为客户端登录程序
# mysql-server 数据库服务器
Way 2: 源码编译安装
tar ---> cmake ---> make ---> make install
Way 3: 批量部署, src.rpm 通过spec文件
# 没研究过
源码编译安装 MySQL 5.5.32
# 对于不通版本源码编译方法不一
# 对于mysql 5.1 系列 不需要使用cmake
# ./configure --> make --> make install
1. 安装编译工具 cmake
yum -y install cmake gcc gcc-c++
# cmake 依赖c语言 需安装Linux下的C编译工具 gcc gcc-g++/C++
2. 下载 MySQL
# 去官网下载
wget http://cdn.mysql.com/archives/mysql-5.5/mysql-5.5.32.tar.gz
解压到指定目录
tar -zxf mysql-5.5.32.tar.gz -C /usr/local/src
3. 解决以来
yum -y install cmake ncurses-devel #用于终端操作的开发包
4. 创建MySQL用户
useradd -u 8001 -M -s /sbin/nologin mysql
# -u 8001 指定UID, -M 不创建宿主目录, -s /sbin/nologin 禁止登录
5. 创建数据库存放目录
mkdir /data # 便于挂载,
# 推荐将数据库数据文件与系统分盘或分区存放,避免IO影响
6. 编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWIHT_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data -DMYSQL_USER=mysql
参数解释:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定安装目录为/usr/local/mysql
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock #指定套接字文件为mysql.sock 通信文件
-DDEFAULT_CHARSET=utf8 #指定字符集为utf8
-DDEFAULT_COLLATION=utf8_general_ci #指定字符校对
-DMYSQL_EXTRA_CHARSETS=all #扩展字符支持 默认all
-DWITH_storage_STORAGE_ENGINE=1 #开启存储storage引擎支持
# storage=MyISAM,Innobase,MEMORY,CVS等
-DWITH_READLINE=1 #开启READLINE模式
-DWITH_LOCAL_INFILE=1 #启动加载本地数据引擎
-DMYSQL_DATADIR=/data #指定数据存储目录
-DMYSQL_USE=mysql #指定运行用户
扩展:
-DWITH_PARTITION_STORAGE_ENGINE=1 #支持分区表
-DINSTALL_LIBDIR=dir_name #指定库文件安装目录
-DSYSCONFDIR=dir_name #指定默认配置文件存放路径
# 默认配置文件为my.cnf
7. 安装
make -j 4 && make install # -j 4 指定4个线程完成本操作,不指定默认为1
8. 授权用户
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data
chmod 1777 /tmp
9. 创建配置文件
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
10. 设置环境变量 #为了以后便于敲命令,不用带路径了
echo 'PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source $! # $! = 上一条指令最后一个参数
11. 创建启动脚本
拷贝启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
添加脚本可执行权限
chmod + x $!
设置脚本mysql安装目录和数据目录
sed -i "s%^basedir=%basedir=/usr/local/mysql%g" /etc/init.d/mysqld
sed -i "s%^datadir=%datadir=/data%g" /etc/init.d/mysqld
添加脚本chkconfig
chkconfig --add mysqld
添加开机启动
chkconfig mysqld on
12. 初始化数据库
在运行数据库之前,需要初始化一下数据
chmod +x /usr/local/mysql/scripts/mysql_install_db
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf
--basedir=/usr/local/mysql --datadir=/data --user=mysql
# 如果在初始化之前运行了数据库,会报错如下:
[root@xiaogan63 ~]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/xiaogan63.cn.pid).
#
[root@xiaogan63 ~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf--basedir=/usr/local/mysql --datadir=/data --user=mysql
TAL ERROR: Could not find ./bin/my_print_defaults
If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.
If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.
# 没有设置环境变量
[root@xiaogan63 ~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf--basedir=/usr/local/mysql --datadir=/data --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
成功!
因为启动脚本错了
sed -i 命令错误替换了字符串导致,mysqld服务无法启动
错误如下:
[root@xiaogan63 ~]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/xiaogan63.cn.pid)
重新拷贝配置文件,并修改如下:
sed -i "s%^basedir=%basedir=/usr/local/mysql%g" /etc/init.d/mysqld
sed -i "s%^datadir=%datadir=/data%g" /etc/init.d/mysqld
替换字符串少了一个符号 ^
[root@xiaogan63 ~]# grep "^basedir=" /etc/init.d/mysqld -R --color
basedir=/usr/local/mysql
[root@xiaogan63 ~]# grep "^datadir=" /etc/init.d/mysqld -R --color
datadir=/data
[root@xiaogan63 ~]#
[root@xiaogan63 ~]# grep "basedir=" /etc/init.d/mysqld -R --color
# basedir=<path-to-mysql-installation-directory>
basedir=/usr/local/mysql
basedir=/usr/local/mysql
# *not* set inside of the --basedir= handler.)
--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'`
[root@xiaogan63 ~]# grep "datadir=" /etc/init.d/mysqld -R --color
datadir=/data
datadir=/data
datadir="$basedir/data"
datadir="$basedir/data"
--datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'`
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
[root@xiaogan63 ~]#
13. 初始化安全配置
mysql_secure_installation #安全初始化配置
# 如果没有运行mysqld服务,则会报错如下:
[root@xiaogan63 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
需将服务启动即可
Enter current password for root (enter for none): #直接回车即可
OK, successfully used password, moving on...
Set root password? [Y/n] y # 设置root密码
# 输入两次密码
... Success!
Remove anonymous users? [Y/n] y # 移除匿名用户
... Success!
Disallow root login remotely? [Y/n] y #禁止root远程登录
... Success!
Remove test database and access to it? [Y/n] y #删除测试数据库
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] y # 重新加载授权表
... Success!
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
14. 安全优化小配置:
用户安装:
mysql> select user,host from mysql.user;
# 只留下root用户的localhost和127.0.0.1;
mysql> delete from mysql.user where user='';
我们还可以删除所有用户,并重新创建一个超级管理员,操作如下:
删除所有用户
mysql> delete from mysql.user;
授权所有权限给system@'localhost'
mysql> grant all privileges on *.* to system@'localhost' identified by
'yourpasswd' with grant option;
使配置生效
mysql> flush privileges;
查看
mysql> select user,host from mysql.user;
2-14 MySQL初步认识,及CentOS6.8环境,源码方式安装MySQL的更多相关文章
- Centos6 系统下源码方式安装Mysql 记录
在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配. #### ...
- centos6.5环境源码编译安装mysql5.6.34
centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...
- CentOS 6.6 下源码编译安装MySQL 5.7.5
版权声明:转自:http://www.linuxidc.com/Linux/2015-08/121667.htm 说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具# ...
- CentOS源码编译安装MySQL 5.5.15
CentOS源码编译安装MySQL 5.5.15 文章目录 [隐藏] 安装编译工具 下载源码 安装cmake和bison 编译安装MySQL 一些相关设置 安装编译工具 yum install g ...
- Shell脚本一键部署——源码编译安装MySQL及自动补全工具
Shell脚本一键部署--源码编译安装MySQL及自动补全工具 编译安装MySQL 1.软件包 Mysql安装包 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者 ...
- 总结源码编译安装mysql
最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- 源码编译安装 MySQL 5.5.x 实践(转)
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- CentOS 7 源码编译安装MySQL 5.7.14
一.添加用户和组 1. 进入root: su 2. 添加组: groupadd mysql 3. 添加用户: useradd -r -g mysql -s /bin/false mysql 二.安装 ...
随机推荐
- Tensorflow 实战Google深度学习框架 第五章 5.2.1Minister数字识别 源代码
import os import tab import tensorflow as tf print "tensorflow 5.2 " from tensorflow.examp ...
- 基于linux-2.6.35的class_create(),device_create解析
基于linux-2.6.35的class_create(),device_create解析 作者:苗老师,华清远见嵌入式学院讲师. 从linux内核2.6的某个版本之后,devfs不复存在,udev成 ...
- Delphi中那些容易混淆的基础(@、^、Addr、Pointer,Move、CopyMemory,GetMem和FreeMem、GetMemory和FreeMemory、New和Dispose、StrAlloc和StrDispose、AllocMem)
@.^.Addr.Pointer Delphi(Pascal)中有几个特殊的符号,如@.^等,弄清楚这些符号的运行,首先要明白Delphi指针的一些基础知识:指针,是一个无符号整数(unsigned ...
- python并发
并发方式 线程(Thread) 多线程几乎是每一个程序猿在使用每一种语言时都会首先想到用于解决并发的工具(JS程序员请回避),使用多线程可以有效的利用CPU资源(Python例外).然而多线程所带来的 ...
- 前端 html head meta
META(Metadata information) 提供有页面的元信息 例如:页面编码.刷新.跳转.针对搜索引擎和更新频道的描述和关键词 1.另外一种编码写法 <meta http-equiv ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- 数据库触发器,禁止DDL操作
CREATE TRIGGER [Object_Change_Trigger_DDL] ON DATABASE FOR ALTER_TABLE,DROP_TABLE,CREATE_TABLE,CREAT ...
- 数据块加密模式以及IV的意思
(本文资料主要来自:http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation) 目前流行的加密和数字认证算法,都是采用块加密(block ...
- java序列化与反序列化(转)
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- http webservice socket的区别
1 数据传输方式1.1 socket传输的定义和其特点 所谓socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有udp和tcp两个协议. ...