MySQL安装
简介
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
MySQL是一个开源的关系型数据库,是最受欢迎的开源软件之一,现在很多网站的数据库都是使用MySQL。 目前是被Oracle收购了。由于开源,很多有想法和有能力的人就会进行改造,使其更适合自己的环境需要,因此MySQL有了一些分支。
分支
主流分支版本
MySQL最开始是由瑞典MySQL AB公司开发;在2008年的时候,MySQL就被Sun公司收购了;Oracle公司在2009年的时候收购了Sun公司,很重要的原因就是为了MySQL。就这样子MySQL官方版本就是Oracle的了。
优势
官方版本
MariaDB
在Sun公司收购MySQL的时候,一些创始人和主要的工程就MySQL公司成立新的公司SkySQL;在Oracle公司收购MySQL的时候,同样有一批高层离开,创立新公司Monty Program Ab(MariaDB的母公司)。2013年4月,Monty Program Ab 和 SkySQL 宣布 两家公司将合并提供 MariaDB 的支持和开发。
优势
- 在server端加强;
- 支持更多的引擎
Percona server for MySQL
Percona Server为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。
优势:
聚焦在innodb引擎,增加了很多性能相关补丁;
在server层改造不多,但增加了很多易管理性的补丁
其他的分支版本
Innosqll:网易开发的性能可靠性得到加强
Drizzle:高效的内存使用,专为多CPU/多核设计
Webscaleesql:Facebook、谷歌、LinkedIn、以及Twitter合作成果专攻海量数据
MySQL的重要性
在所有数据库中,MySql排在第二,而nosql中mongodb排在第一,你可能在想是不是有必要把Oracle也学习下,别着急,再看张图
全球访问量最大的20家网站,他们分别使用了什么数据库呢,绝大多数使用mysql,有两个完整live.com和bing使用的是mssql,并不是他们使用不了mysql,而是他要支持自己的数据库。
在国外可能挺多使用mssql或者oracle的,但是在过能,在去IOE的大背景下,包括银行在内的很多传统公司慢慢都在像mysql转型,不过其中有个老大不掉的公司,中国电力,依然使用oracle,在十年的时间仅仅在oracle的使用上,中国电力就支出390几个亿,平均一年30,40个亿,它有钱,如果你所在公司随随便便也能拿个几百个亿,那你也用oracle吧。
MySQL安装
windows 安装
绿色安装
有时候需要本地开发的时候需要绿色安装
下载Mysql
鼠标滑下来,找到Other Download中的 Windows (x86, 64-bit), ZIP Archive,点击其右边的Download按钮进行Mysql下载
点击No thanks,just start my download即可进行Mysql下载
解压
下载完之后,解压安装包,解压路径随意(这里我解压到D:\Program Files\mysql中),在解压好的mysql-8.0.12-winx64文件夹中,新建一个空的data文件夹(注意这里的data文件夹必须是空的)
配置my.ini
由于官网从5.7.18开始之后都不在二进制包中提供my-default.ini文件,所以这就需要我们自行创建一个my.ini文件(如果有my-default.ini文件,复制一份,把名称修改成my.ini 即可)
在把下面的配置信息复制到my.ini文件中
1 | # For advice on how to change settings please see |
这里有三处地方需要修改成你的mysql安装目录
basedir = “D:\Program Files\mysql” # 设置你自己 mysql的安装目录
datadir = “D:\Program Files\mysql\data” # 设置你自己 mysql数据库的data文件夹的存放目录,必须是data
Server = “D:\Program Files\mysql\bin\mysqld.exe” # 设置你自己 mysql数据库的mysqld.exe文件的存放目录
配置Mysql的运行环境
选中 我的电脑 → 鼠标右键 → 属性(R) → 高级系统设置 → 环境变量(N) 进行环境配置
点击环境变量
在系统变量中找到Path变量,点击编辑(I)按钮
点击新建(N)按钮,输入你刚刚安装Mysql中bin文件夹的路径,例如:我的bin文件夹的路径是 D:\Program Files\mysql\bin,再点击确定
初始化mysql
以管理员身份打开“命令行窗口”,输入命令 mysqld –initialize-insecure –user=mysql
1 | mysqld --initialize |
这里会生成data文件夹,如果报错,可能是my.ini错误,使用下面命令
1 | mysqld –initialize-insecure –user=mysql |
执行这条命令需要花一定的时间(大概几秒,根据电脑情况),不会有返回结果,但是可以在MySQL的安装目录下看到,原本为空的data文件夹里面有了许多文件和文件夹
注意如果data目录没有mysql等文件夹说明初始化失败,需要执行
mysqld --initialize
,进行初始化否则mysql会启动失败
添加到服务
以管理员身份打开“命令行窗口”,输入命令 mysqld -install
当看到Service successfully installed时,表示Mysql服务添加成功
启动mysql服务
以管理员身份打开“命令行窗口”,输入命令net start mysql,启动Mysql服务
登录mysql
以管理员身份打开“命令行窗口”,输入mysql -uroot -p并按下回车键
登录mysql后,修改密码(默认密码为空)
在弹出Enter password: 时,继续按下回车键,即可登录mysql
修改密码
输入命令 use mysql;
输入命令ALTER USER ‘root‘@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’; (注意末尾要有分号)
例如 ALTER USER ‘root‘@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘root’;
输入命令flush privileges; 刷新数据库
输入命令exit; 退出窗口
1 | use mysql; |
卸载
关闭mysql服务
以管理员身份打开“命令行窗口”,输入命令net stop mysql,启动Mysql服务
关闭服务可以使用命令行,也可以在「任务管理器」的「服务」里进行关闭,也可以用命令行关闭
删除Mysql的注册表
进入注册表
Win+R打开运行界面,在输入框中输入 regedit 进入系统注册表窗口
删除注册表的键
分别在以下目录中找到 MySQL 的注册表,鼠标右键直接删除MySQL目录中的 EventMessageFile 和 TypesSupported 两个文件就好了,如果对应的目录中没有,就不用删除了,也可以搜索注册表: 在系统注册表窗口选择「编辑」 — 选择「查找」 — 输入 「MySQL」进行查找,将找到的MySQL目录中的 EventMessageFile 和 TypesSupported 两个文件进行删除
1 | HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Application/MySQL |
移除Mysql服务
以管理员身份使用命令行(cmd)进入MySQL的 bin 目录下
执行移除 MySQL服务的命令 : mysqld -remove
当看到有Service successfully removed时,则表示移除Mysql服务成功
LINUX 安装
准备工作
Linux 使用的版本是centos 7,为方便起见,先把防火墙关闭,配置好网络,在安装部分,会分成两部分讲,首先讲单实例安装,也就是一台服务器上就装一个mysql,接下来就多实例安装,在一个服务器上安装2个甚至多个mysql。
单实例安装
安装需要的依赖
1 | yum install -y libaio |
下载MySQL
通过一下路径下载mysql
1 | wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz |
解压文件
将mysql解压后并转移到/usr/local/目录 并重命名为mysql-5.7.11
1 | sudo tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz |
建立软链接
1 | cd /usr/local/mysql |
添加用户与组
1 | groupadd mysql |
创建配置文件及相关目录
修改配置文件:/etc/my.cnf,配置不对的话,后面初始化不全,会拿不到默认密码。
修改my.cnf
vi /etc/my.cnf
1 | [mysqld] |
:wq! 保存退出。
创建sock文件
创建 /tmp/mysql.sock
设置用户组及用户,授权
1 | cd /tmp |
创建文件pid文件
创建文件/tmp/mysqld/mysqld.pid
1 | mkdir mysqld |
创建日志文件
创建文件/var/log/mysqld.log
1 | touch /var/log/mysqld.log |
初始化数据库
1 | cd /usr/local/mysql/bin/ |
启动数据库
1 | ./mysqld --user=mysql & |
是否启动成功,可以通过查看mysql进程,ps -ef | grep mysql
查看MySql密码
默认密码在mysqld.log日志里
1 | cat /var/log/mysqld.log |
登录mysql
拷贝或者输入mysqld.log中获得的默认密码,执行登录命令,即可进入mysql命令客户端。
1 | cd /usr/local/mysql/bin/ |
修改密码
修改密码 为 123456
1 | mysql> set password=password(“123456”); |
设置远程登录权限
1 | mysql>grant all privileges on . to 'root'@'%' identified by '123456' |
立即生效
1 | mysql> flush privileges; |
退出quit 或者 exit
1 | mysql> quit; |
开机服务启动设置
把support-files/mysql.server 拷贝为/etc/init.d/mysql
1 | cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql |
查看是否拷贝成功
1 | ll /etc/init.d/ |
注册为开机启动
把mysql注册为开机启动的服务
1 | chkconfig --add mysql |
启动服务
1 | service mysql start |
创建快捷方式
服务启动后,直接运行mysql -u root -p即可登录,不需要进入到对应的目录
1 | ln -s /usr/local/mysql/bin/mysql /usr/bin |
多实例安装
以前一些很low的方法是,解压两个mysql,分别放到不同文件夹,其实在mysql中已经考虑到了多实例安装的情况。也有相应的脚本命令的支持。
现在要求装两个mysql 一个3307,3308
安装依赖包(非必须)
1 | yum -y install make gcc-c++ cmake bison-devel ncurses-devellibaio libaio-devel |
解压
解压到/usr/local/ 下面, 更名mysql
1 | cp /soft/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz /usr/local/ |
修改配置文件
vi /etc/my.cnf
1 |
|
添加用户与组
1 | groupadd mysql |
创建软连接
1 | ln -s /usr/local/mysql-5.7.9-linux-glibc2.5-x86_64 mysql |
数据目录赋权
创建2个数据目录并赋权限
1 | mkdir /data1 |
初始化数据库
初始化各个实例,初始化完后会在日志中生成密码,记得保存,一会要用。
1 | /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data1 |
开启各实例的SSL连接
1 | /usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data1 |
添加环境变量
在文件最后面添加内容
1 | vi /etc/profile |
使修改的配置文件生效
1 | source /etc/profile |
配置开机启动
复制多实例脚本到服务管理目录下
1 | cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multid |
给予脚本可执行权限
1 | chmod +x /etc/init.d/mysqld_multid |
加入service服务管理
1 | chkconfig --add mysqld_multid |
显示服务列表
1 | chkconfig --list |
如果3,4,5都是开的就说明是自启设置成功。没有的话,就执行
1 | chkconfig --level 345 mysqld_multid on |
查看状态
1 | /etc/init.d/mysqld_multid report |
安装perl环境
这个时候发现还需要perl的环境,安装
1 | yum -y install perl perl-devel |
执行结果
1 | /etc/init.d/mysqld_multid report |
linux运维
附加介绍一下Linux系统的运行级的概念
Linux OS 将操作 环境分为以下7个等级,即:
0:关机
1:单用户模式(单用户、无网络)
2:无网络支持的多用户模式(多用户、无网络)
3:有网络支持的多用户模式(多用户、有网络)
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式(多用户、有网络、X-Window界面)
6:重新引导系统,即重启
启动各个实例
1 | mysqld_multi start |
查看实例的监听端口
1 | ss -tulpn|grep mysqld |
连接实例
1 | mysql -u root -S /tmp/mysql.sock1 -p -P3307 |
修改密码
分别修改密码
1 | set password = '123456%'; |
允许远程连接mysql
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456%'; |
其中,root 是用户名,% 表示所有人都可以访问,password是密码。
最后测试查询
1 | use mysql; |
第二个MySQL节点3308,设置如下
1 | mysql -u root -S /tmp/mysql.sock2 -p -P3308(同上) |
CentOS7 防火墙设置
CentOS7 使用firewalld代替了原来的iptables,使用方法如下:
关闭防火墙
1 | systemctl stop firewalld.service #停止firewall |
开启端口
1 | firewall-cmd --zone=public --add-port=80/tcp --permanent |
重启防火墙
1 | firewall-cmd --reload |
其他常用命令
1 | firewall-cmd --state ##查看防火墙状态,是否是running |
更多命令,使用 firewall-cmd –help 查看帮助文件
CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下
使用iptables
直接关闭防火墙
1 | systemctl stop firewalld.service #停止firewall |
设置 iptables service
1 | yum -y install iptables-services |
如果要修改防火墙配置,如增加防火墙端口3306
1 | vi /etc/sysconfig/iptables |
增加规则
1 | -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT |
保存退出后
1 | systemctl restart iptables.service #重启防火墙使配置生效 |
最后重启系统使设置生效即可。