mysql-5.7.xx在lcentos7下的安装以及mysql在windows以及linux上的性能差异
前言:
在centos上安装mysql,整整折腾了将近一天,因为是第一次安装,的确是踩了不少坑,这里详细记录下来,方便各位有同样需求的小伙伴参考。
该选择什么版本?
mysql5.7有很多小版本,但是,从5.7.18版本开始,是一个分界线,因为从5.7.18版本及以后版本,安装包里面的的support-files文件夹下,便没有default.cnf了,所以这里导致5.7.18以前的版本和5.7.18及以后版本的安装,是略有不同的。我这里安装选择5.7.28版本,当然,如果您选择其他版本安装也是可以的,但是我建议还是选择5.7.18以后的版本。
安装准备
mysql官网同时提供了32位版本和64位版本的安装包,我这里centos是64位的,所以这里下载的是64位的mysql安装包。【注意:如果懵懵懂懂的就去安装,在64位系统上安装了32位的mysql,安装过程中会报各种错误,如果您再去百度这些错误去解决,就走了一个大大的弯路,很遗憾,笔者就犯了这个错误,折腾了一个小时,才又重新下载64位的安装包,引以为戒啊】
网盘地址: 链接:https://pan.baidu.com/s/1PgMzZITE4BciEYUEh_Sphg 提取码:2n5t 【网盘速度很慢,也可以用这个地址:http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz】
具体安装过程
1.卸载自带的mariadb
执行:
- rpm -qa | grep mariadb
发现系统已经默认安装了mariadb,根据系统查询出来的信息,进行删除
执行:
- yum remove mariadb-libs-5.5.56-2.e17.x86_64
2.卸载已经安装的mysql
执行:
- rpm -qa | grep mysql
我的系统以前没有安装过mysql,所以不需要做任何操作。 如果您的系统以前安装过mysql,可以参考centos下彻底删除mysql这篇文章进行彻底删除
3.下载mysql-5.7.28安装包并解压
您可以用我百度网盘里面的地址拷贝下来,并粘贴到linux服务器相应地址,也可以使用该地址:http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
关于安装地址的选择,我们显然需要将mysql安装在大磁盘里,
执行脚本:
- df -h
根据脚本执行结果来看,我的系统/home挂载点空间较大,所以我将mysql安装在/home 下【您可以根据您的需求安装在其他位置,如/usr/local也是不错的选择】
依次执行脚本:
- cd /home
- mkdir mysql
- cd mysql
- wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
- tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
- mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql-5.7.28
执行ls脚本,可以发现mysql文件夹下已经有了mysql-5.7.28文件夹
4.在/usr/local/目录下创建到/home/mysql/mysql-5.7.28的软链接
- cd /usr/local
- ln -s /home/mysql/mysql-5.7.28 mysql
- 5.添加mysql用户,修改mysql目录权限,并用此用户执行应用
- useradd -s /bin/false -M mysql
- cd /home/mysql
- chown -R mysql:mysql mysql-5.7.28
6.拷贝配置文件,将mysql的配置文件拷贝为/etc/目录下的my.cnf,并修改配置文件
- 这里特别注意:/etc文件夹下并没有my.cnf文件,没有关系,我们直接执行:
- vi /etc/my.cnf
- 并下下面的内容拷贝到编辑框里面,并执行 :wq 进行保存
- [mysqld]
- # binlog 配置
- log-bin=/usr/local/mysql/logs/mysql-bin.log
- expire-logs-days=14
- max-binlog-size=500M
- server-id=1
- # GENERAL
- basedir=/usr/local/mysql
- datadir=/usr/local/mysql/data
- socket=/usr/local/mysql/mysql.sock
- user=mysql
- default-storage-engine=InnoDB
- character-set-server=utf8lower_case_table_names = 1explicit_defaults_for_timestamp=true
- [mysqld_safe]
- log-error=/usr/local/mysql/mysql-error.log
- pid-file=/usr/local/mysql/mysqld.pid
- [client]
- socket=/usr/local/mysql/mysql.sock
- [mysql]
- default-character-set=utf8
- socket=/usr/local/mysql/mysql.sock
7.安装mysql,进入mysql目录执行以下命令
- yum -y install autoconf
- cd /home/mysql/mysql-5.7.28
- bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
执行脚本如果报以上错误,请执行以下脚本解决:
- mkdir logs
- touch mysql-bin.index
- chgrp -R mysql /home/mysql/mysql-5.7.28
再次执行:
- ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
出现以上提示,则表示安装成功,记录下默认密码:fa&fJH-Wt0FQ
8.拷贝启动程序,将mysql的启动程序拷贝到/etc/init.d/目录下
- cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
- 9.安装完,启动mysql服务
- service mysqld start
出现以上错误,说明日志文件没有创建,创建日志文件并修改权限即可
- cd /home/mysql/mysql-5.7.28
- touch mysql-error.log
- chown mysql:mysql mysql-error.log
再次执行:
- service mysqld start
说明mysql已经安装成功
10.配置环境变量,编辑/etc/profile,方便在任何地方用mysql命令
- vim /etc/profile
- 在文件的最后面加入
- #mysql
- export MYSQL_HOME=/usr/local/mysql
- export PATH=$PATH:$MYSQL_HOME/bin
重新编译:
- source /etc/profile
- 11.登录mysql,修改密码
首次登录没有密码,提示输入密码时,输入第7步安装时生成的密码:fa&fJH-Wt0FQ
- mysql -uroot -p
使用alter user重置密码:
- mysql> alter user 'root'@'localhost' identified by '******';
- mysql> flush privileges;
配置远程访问:
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;
至此,mysql安装完成。
后记:
因为对linux钻研的不是十分透彻,所以,一直有抵触心理,以至于安装mysql时,百度了一下看看mysql在windows上和linux上的差异,大部分人说的是差异并不大。 我妥协了,把mysql安装在了windows server 2016 上,但是性能并不十分出众,虽然也勉强能用,但是绝对不是最优。 身为资深码农,就是不能怕困难,所以我决定拥抱linux,把mysql装在linux上,并比较性能差异:
指标 | windows server 2016下时间(16核32GB) | cnetos7下时间(16核32GB) |
1200万+数据取count的时间 | 10.711秒 | 2.939秒 |
600万+数据取count时间 | 3.216秒 | 1.303 |
175万+数据取count的时间 | 3.025秒 | 0.671秒 |
1200万+数据创建索引1个索引时间 | 1300秒 | 237秒 |
600万+数据取count时间 | 700秒 | 120秒 |
175万+数据取count的时间 | 130秒 | 28秒 |
经过比较得出的结论,同样的配置,linux下的mysql各项性能指标,是windows的3-7倍之间。 所以,身为程序员,我们要选择最优的,不要妥协,不要将就,不要纠结,mysql就装在linux上吧,人家刚诞生时,就是装在linux上的,linux和mysql本身就是天生一对,我们不要拆散他。
mysql-5.7.xx在lcentos7下的安装以及mysql在windows以及linux上的性能差异的更多相关文章
- Mac下新安装的MySQL无法登陆root用户解决方法
一 设置MySQL命令行搜索路径 0.苹果->系统偏好设置->最下边点mysql 在弹出页面中 启动mysql服务 1.打开终端,输入: sudo vi ~/.bash_profile ...
- centos下yum安装crontab+mysql自动备份
参考博文: centos下yum安装crontab yum install vixie-cron crontabs //安装 chkconfig crond on ...
- Mac下新安装的MySQL无法登陆root用户(安装时没有设置密码)
1.也不知是何原因,新安装好的MySQL,如果尝试用mysql -u root -p登陆就会出现这样的错误,但是root用户根本就没有设置密码. $ cd /usr/local$ cd mysql $ ...
- windows和linux上mysql的安装
mysql基于多平台,多版本的安装 mysql.tar.gz 链接:https://pan.baidu.com/s/1lG9BNL1mG4qbjM8xLHtrjQ 密码:s4tk MySQL 是一个 ...
- windows下新安装的mysql修改root password问题
常用步骤: 1. 在my.ini中的mysqld下添加一行 skip-grant-tables 2.重启mysql后直接进入后,用SQL直接修改password列: C:\> net stop ...
- 【未解决】Linux下PHP安装扩展Mysql的问题
[步骤分析] 1.在PHP源码包下定位到指定位置:源码包/ext/mysqli 注1:网上很多地方红字部分是mysql,其实PHP5以后已经不用mysql了. 2.运行:/usr/local/php/ ...
- mac系统下docker安装配置mysql详细步骤
上文介绍了MacOS安装Docker傻瓜式教程,安装好后第一件事就决定把本地数据库迁移过来,那么首先就得安装mysql,下面就开始我们的安装之旅吧. 一.docker配置镜像加速器 我们使用docke ...
- 在Windows XP下手动安装Apache+MySQL+PHP环境 要点
在整个wamp环境搭建中,本质的工作如下: 1,配置系统对php中dll文件能默认处于调用状态.在windos下,对dll文件系统默认处于调用状态的,有两种采用的方式.第一种是:把需要调用dll文件复 ...
- Linux下 刚安装完mysql 修改密码
在Centos中安装MySQL后默认的是没有root密码的,默认的是回车, 那么为了方便需要修改密码. 没有密码为MYSQL加密码: mysql -uroot -p 回车 提示输入密码,为空回车 up ...
随机推荐
- p46_IPv4地址
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口. IP地址::={<网络号>,<主机号>} 图中有6个子网 比如222.1.3.0是网络号,3是主机号,222 ...
- [jvm] -- 类加载过程篇
类加载过程 系统加载 Class 类型的文件主要三步 加载 通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class对象, ...
- epic游戏平台如何启用认证器应用程序/二次验证码/谷歌身份验证器?
1.登陆epic游戏平台,找到二次验证绑定界面 登陆https://www.epicgames.com/store/zh-CN/, 点右上角用户头像-[账户]. 之后点-[密码与安全] 在[双重验证] ...
- finalize()和四种引用的一点思考
一次对ThreadLocal的学习引发的思考 ThreadLocal对Entry的引用是弱引用,于是联想到四种引用的生命周期. 强引用,不会进行垃圾回收 软引用,JVM内存不够,进行回收 弱引用,下次 ...
- 如何理解Flutter中的asyc 和 await
https://blog.csdn.net/xdhc304/article/details/90232723 Flutter的语法非常精简, 对于异步任务, 只要使用asyc和awai 配合就能实现, ...
- Redis的事件机制
目录 一.Redis的运行过程 二.事件数据结构 2.1 文件事件数据结构 2.2 事件事件数据结构 3.3 事件循环 三.事件的注册过程 3.1 文件事件的注册过程 3.2 时间事件的注册过程 四. ...
- form-create 组件生成规则说明
本文介绍form-create生成规则与组件的关系 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置1 ...
- sublimeCLang配置报错以及sublime快捷键
subimeClang需要手动配置我真的真的很服 记录一下满是报错的高光时刻 -------- 不过这个问题刚刚解决了 只要把所有的shared_ptr改成std::shared_ptr 就行 说白了 ...
- HTML <hr> 标签
高佣联盟 www.cgewang.com HTML <hr> 标签 实例 当内容的主题发生变化时,使用 <hr> 标签进行分隔: <h1>HTML</h1&g ...
- Blob分析之ball_seq.hdev
* ball_seq.hdev: Inspection of Ball Bonding * 关闭更新dev_update_off ()*图像集合ImageNames := 'die/' + ['die ...