Linux网站架构系列之Mysql—部署篇

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。本篇将为大家讲解mysql的简单部署。

mysql的分为四个版本:

并且mysql为了更好发展将版本路线分为了三条。

由于mysql不用产品线之间的编译安装方法还是有差别,因此本篇将分别为大家讲解mysql的5.1.7版本和5.6.13版本的简单部署。

5.1.7版本

一、准备工作

1、开发环境部署

[root@c64web~]#yumgroupinstall"Developmenttools""ServerPlatformDevelopment"-y#安装这两个开发环境的软件包组

[root@c64-web~]#yuminstallpcre*-y#安装pcre兼容的正则表达式

2、创建用户及目录

[root@c64-web~]#useradd-s/sbin/nologin-Mmysql#创建mysql用户,并加入mysql组,不创建家目录,关闭登陆

[root@c64-web~]#mkdir/mydata#创建数据库存放目录

[root@c64-web~]#chown-Rmysql.mysql/mydata

3、下载源码包

[root@c64-web~]#cd/server/tools

二、编译安装

准备工作已经做好了,现在我们就开始编译安装mysql。

[root@c64-webtools]#tarzxfmysql-5.1.70.tar.gz

[root@c64-webtools]#cdmysql-5.1.70

[root@c64-webmysql-5.1.70]#./configure\

--prefix=/usr/local/mysql\#设定mysql安装路径,默认为/usr/local

--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock\#指定Mysqlsocket文件存放目录

--localstatedir=/mydata\#设定mysql的数据文件存放位置

--enable-assembler\#允许使用汇编模式(优化性能)

--enable-thread-safe-client\#以线程方式编译客户端

--with-mysqld-user=mysql\#指定MySQL运行的系统用户

--with-big-tables\#启用大表支持

--without-debug\#使用非debug模式

--with-pthread\#强制使用pthread线程序库编译

--with-extra-charsets=complex\#复杂字符集支持

--with-readline\#使用系统readline代替捆绑副本。

--with-ssl\#启用ssl加密

--with-embedded-server\#构建嵌入式MySQL库(libmysqld.a)

--enable-local-infile\#让mysql支持从本地加载数据库(默认关闭)

--with-plugins=partition#mysql分区功能支持

--with-plugins=innobase\#innobas存储引擎支持

--with-mysqld-ldflags=-all-static\#服务器使用静态库(优化性能)

--with-client-ldflags=-all-static#客户端使用静态库(优化性能)

[root@c64-webmysql-5.1.70]#make&&makeinstall

执行了上面的操作之后,mysql-5.1.7版本就编译安装成功了。

下面为快速复制,编译配置文本:

[root@c64-webmysql-5.1.70]#./configure--prefix=/usr/local/mysql-5.1.70--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock--localstatedir=/mydata--enable-assembler--enable-thread-safe-client--with-mysqld-user=mysql--with-big-tables--without-debug--with-pthread--with-extra-charsets=complex--with-readline--with-ssl--with-embedded-server--enable-local-infile--with-plugins=partition--with-plugins=innobase--with-mysqld-ldflags=-all-static--with-client-ldflags=-all-static

1、创建目录软链接

mysql安装完成之后,我们要先为编译安装好的目录添加软链接。此操作在生产环境中为重要调优参数,添加这条软链接的目的有两点:1、方便人类使用。2、便于以后升级版本。

[root@c64-webmysql-5.1.70]#cd/root

[root@c64-web~]#ln-s/usr/local/mysql-5.1.70/usr/local/mysql

2、创建其它相应目录及权限设置

[root@c64-web~]#mkdir/mydata#建立mysql数据文件目录

3、获取Mysql主配置文件并修改

由于mysql的主配置文件,编译安装之后默认是没有的。因此我们需要在mysql的编译包中,选择预支的*.cnf结尾的配置文件将其复制到我们的/etc/目录下。

[root@c64-web~]#ll/server/tools/mysql-5.1.70/support-files/*.cnf

-rw-r--r--1rootroot471411月602:25/server/tools/mysql-5.1.70/support-files/my-huge.cnf

-rw-r--r--1rootroot1976311月602:25/server/tools/mysql-5.1.70/support-files/my-innodb-heavy-4G.cnf

-rw-r--r--1rootroot468811月602:25/server/tools/mysql-5.1.70/support-files/my-large.cnf

-rw-r--r--1rootroot469911月602:25/server/tools/mysql-5.1.70/support-files/my-medium.cnf

-rw-r--r--1rootroot246711月602:25/server/tools/mysql-5.1.70/support-files/my-small.cnf#中小型公司用这个即可

[root@c64-webmysql-5.1.70]#/bin/cp/server/tools/mysql-5.1.70/support-files/my-small.cnf/etc/my.cnf

修改mysql的主配置文件/etc/my.cnf,添加如下1行

datadir=/mydata#我们自定义的数据库存放目录

4、让系统识别源码包安装的软件

a)将mysql的库文件路径加入系统的库文件搜索路径中

方法一:直接做软链接

[root@c64-web~]#ln-s/usr/local/mysql/lib/mysql/usr/lib/mysql

方法二:利用ldconfig导入系统库(推荐)

[root@c64web~]#echo"/usr/local/mysql/lib">>/etc/ld.so.conf.d/mysql.conf

[root@c64-web~]#ldconfig

b)输出mysql的头文件到系统头文件

[root@c64web~]#ln–

s/usr/local/mysql/include/mysql/usr/include/mysql

c)配置mysql命令全局使用路径

[root@c64web~]#echo"PATH=/usr/local/mysql/bin:$PATH">>/etc/profile

[root@c64-web~]#source/etc/profil

5、以mysql用户的身份初始化数据库并启动

[root@c64-web~]#/usr/local/mysql/bin/mysql_install_db--basedir=/usr/local/mysql--datadir=/mydata--user=mysql#初始化mysql数据库文件

WARNING:Thehost'c64-web'couldnotbelookedupwithresolveip.

Thisprobablymeansthatyourlibclibrariesarenot100%compatible

withthisbinaryMySQLversion.TheMySQLdaemon,mysqld,shouldwork

normallywiththeexceptionthathostnameresolvingwillnotwork.

ThismeansthatyoushoulduseIPaddressesinsteadofhostnames

whenspecifyingMySQLprivileges!#此警告我们可以通过在/etc/hosts文件中修改127.0.0.1后面的localhost为当前c64-web来消除。

InstallingMySQLsystemtables...

13110818:07:26[Warning]'--skip-locking'isdeprecatedandwillberemovedinafuturerelease.Pleaseuse'--skip-external-locking'instead.#这里的警告无需理会

OK

Fillinghelptables...

13110818:07:27[Warning]'--skip-locking'isdeprecatedandwillberemovedinafuturerelease.Pleaseuse'--skip-external-locking'instead.#这里的警告无需理会

Tostartmysqldatboottimeyouhavetocopy

support-files/mysql.servertotherightplaceforyoursystem

#这里是说,你可以创建快速启动脚本,我们下面会提到

PLEASEREMEMBERTOSETAPASSWORDFORTHEMySQLrootUSER!

Todoso,starttheserver,thenissuethefollowingcommands:

/usr/local/mysql/bin/mysqladmin-urootpassword'new-password'

/usr/local/mysql/bin/mysqladmin-uroot-hlhhpassword'new-password'

#教你如何创建root用户进入mysql数据库的密码

Alternativelyyoucanrun:

/usr/local/mysql/bin/mysql_secure_installation

whichwillalsogiveyoutheoptionofremovingthetest

databasesandanonymoususercreatedbydefault.Thisis

stronglyrecommendedforproductionservers.

Seethemanualformoreinstructions.

YoucanstarttheMySQLdaemonwith:

cd/usr/local/mysql;/usr/local/mysql/bin/mysqld_safe&

#上面的即为开启命令中的一种,后面的&为放入后台执行的意思

YoucantesttheMySQLdaemonwithmysql-test-run.pl

cd/usr/local/mysql/mysql-test;perlmysql-test-run.pl

#这里是给你说如何执行测试

Pleasereportanyproblemswiththe/usr/local/mysql/scripts/mysqlbugscript!

#以上为初始化创建mysql数据库文件时产生的信息。

[root@lhhmydata]#cd/usr/local/mysql;/usr/local/mysql/bin/mysqld_safe&

[1]7146

13110818:50:37mysqld_safeLoggingto'/mydata/lhh.err'.

13110818:50:37mysqld_safeStartingmysqlddaemonwithdatabasesfrom/mydata#此处需要敲击回车才能回到命令输入界面。

mysql数据库启动的另外一种方法

[root@c64-web~]#/bin/cp/server/tools/mysql-5.1.70/support-files/mysql.server/etc/init.d/mysqld#拷贝mysql启动脚本mysql命令路径

[root@c64-web~]#chmod700/etc/init.d/mysqld#使脚本可执行

[root@c64-web~]#/etc/init.d/mysqldstart#这是启动数据库方法之一

[root@c64-web~]#/etc/init.d/mysqldstop#关闭数据库的方法

[root@c64-web~]#killalllmysqld#关闭数据库的另外一种方法

6、检查mysql数据库是否启动:

[root@c64-web~]#netstat-lnt|grep3306

tcp000.0.0.0:33060.0.0.0:*LISTEN

可以看到,我们的mysql服务已经启动起来了。这里如果发现3306端口没起来,请tail-100/usr/local/mysql/data/机器名.err检查日志报错进行调试。

7、设置初始账户,并登陆后台

在上面,初始化创建mysql数据库的时候,已经给我们提到了如何给mysql数据库账号设置密码,下面我们就进行操作。

[root@c64-web~]#mysqladmin-urootpassword123456#设置密码

[root@c64-web~]#history-c#设置之后注意清除历史记录,防止密码泄露

[root@c64-web~]#mysql-uroot-p#连接数据库查看

Enterpassword:#这里输入刚才设置的密码

WelcometotheMySQLmonitor.Commandsendwith;or\g.

YourMySQLconnectionidis2

Serverversion:5.1.70Sourcedistribution

OracleisaregisteredtrademarkofOracleCorporationand/orits

affiliates.Othernamesmaybetrademarksoftheirrespective

owners.

Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.

mysql>showdatabases;#查看现有的数据库

+--------------------+

|Database|

|information_schema|

|mysql|

|test|

3rowsinset(0.00sec)

mysql>selectuser();#查看现有用户

+----------------+

|user()|

|root@localhost|

1rowinset(0.00sec)

mysql>quit#退出

Bye

到此,我们mysql-5.1.17的部署就已经完成了,下面将是5.6.13的部署。

5.6.13版本

mysql的第二条产品线和第一条产品线的产品主要在数据存储引擎和编译安装的方法上有点区别,因此这里我就主要对编译安装的部分进行讲解,其它地方都是大同小异的。

一、更改编译配置工具为cmake

注意下面mysql-5.6.x系列版本在编译配置时,放弃了用./configure,进而使用到了cmake,因此我们需要先安装cmake这个工具,下面才能执行编译配置。

二、编译参数更改

mysql-5.6.x系列版本综合性的编译参数详解:

[root@c64-webmysql-5.6.13]#cmake

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\#指定mysql安装目录

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock\#Unixsocket文件路径,自定义此路径防报错

-DDEFAULT_CHARSET=gbk\#默认字符

-DDEFAULT_COLLATION=gbk_chinese_ci\#校验字符

-DEXTRA_CHARSETS=all\#安装所有扩展字符集

-DWITH_MYISAM_STORAGE_ENGINE=1\#安装myisam存储引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1\#安装innodb存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1\#安装archive存储引擎

-DWITH_BLACKHOLE_STORAGE_ENGINE=1\#安装blackhole存储引擎

-DWITH_MEMORY_STORAGE_ENGINE=1\#安装memory存储引擎

-DWITH_FEDERATED_STORAGE_ENGINE=1#安装frderated存储引擎

-DWITH_READLINE=1\#快捷键功能

-DENABLED_LOCAL_INFILE=1\#允许从本地导入数据

-DMYSQL_DATADIR=/usr/local/mysql/data\#数据库存放目录

-DMYSQL_USER=mysql\#数据库属主

-DMYSQL_TCP_PORT=3306\#数据库端口

-DSYSCONFDIR=/etc\#MySQL配辑文件

-DWITH_SSL=yes#数据库SSL

下面为快捷复制执行命令:

[root@c64-webmysql-5.6.13]#cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMYSQL_UNIX_ADDR=/tmp/mysql.sock-DDEFAULT_CHARSET=gbk-DDEFAULT_COLLATION=gbk_chinese_ci-DEXTRA_CHARSETS=all-DWITH_MYISAM_STORAGE_ENGINE=1-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_ARCHIVE_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITH_MEMORY_STORAGE_ENGINE=1-DWITH_FEDERATED_STORAGE_ENGINE=1-DWITH_READLINE=1-DENABLED_LOCAL_INFILE=1-DMYSQL_DATADIR=/mydata-DMYSQL_USER=mysql-DMYSQL_TCP_PORT=3306-DSYSCONFDIR=/etc-DWITH_SSL=yes

执行之后,还是用make&&makeinstall来执行编译安装。

三、主配置文件调整

在5.6.X系列的版本中,mysql的主配置文件发生了变化。可以看到,mysql-5.6.13版本中取消了原来的my-huge.cnf,my-large.cnf,my-small.cnf模版,同时取而代之是my.cnf或者是my-default.cnf一个配置模板。

[root@c64-webmysql-5.6.13]#ll/server/tools/mysql-5.6.13/support-files/*.cnf

-rw-r--r--.1rootroot1126Nov801:37/server/tools/mysql-5.6.13/support-files/my-default.cnf

[root@c64-webmysql-5.6.13]#/bin/cp/server/tools/mysql-5.6.13/support-files/my-default.cnf/etc/my.cnf

并且,模板文件里需要配置的地方很少。这是因为mysql-5.6.x系列将以前许多默认值设置不合理的参数都进行了调整,并且采用了一种out-of-box的思维,即有些值是固定的,有些值是启动时,根据其他参数或者服务器的配置来自动设置的,所以不需要初始指定很多值。

THE END
1.基于C语言编写一个简单的Web服务器C语言C语言可以干大事,我们基于C语言可以完成一个简易的Web服务器。当你能够自行完成web服务器,你会对C语言有更深入的理解。对于网络编程,字符串的使用,文件使用等等都会有很大的提高。 关于网络的TCP协议在这里不在多说,大家可以查阅些资料。 工具 开发工具: CLion,编译器 演示效果图 创建socket对象 1 2 3 4 5 6https://www.jb51.net/program/3173974wj.htm
2.C++Webserver从零开始全流程记录对于想走cpp后端开发的同学来说,webserver真的是非常经典的项目,可以说是必做的项目,可以学到的知识太多太多,和纯靠看书看视频完全不一样。做这个项目给我的体验是,我在这个过程中学习的越多,我不懂的就越多。也正是因为这样,才能一直有一股力量在支撑,我要把这个弄懂,这个信念支持着我一直做下去。我觉得,这https://blog.csdn.net/qq_52313711/article/details/136356042
3.redis在yml中配置关闭mob64ca1404baa2的技术博客Web 开发分类 各种数据库对比 NoSQL 数据库 Memcache 和 Redis 的区别? 其它数据库 Redis 简介与安装 Redis 简介 Redis 应用场景 Redis 的下载 Redis 的安装 Redis 的启动 Redis 前台启动(不推荐) Redis 后台启动 Redis 的相关知识 Redis 常用五大数据类型 https://blog.51cto.com/u_16213635/12097620
4.狼叔:Node全栈为前端带来更多可能整体来看,Node.js 在企业 Web 开发领域日渐成熟,无论微服务,还是 Api 中间层都得到了非常好的落地。2017 年,唯一遗憾的是 Node.js 在 servless 上表现的不太好,相关框架实践偏少。 c)不可不见的 Api 中间层 前端越来越复杂,后端服务化,今日的前端要面临更多的挑战。一个典型的场景就是在服务化架构里,前端https://www.infoq.cn/article/node-full-stack-bring-more-possibility
5.的WEB服务器,支持C/C++PythonJava等多语言混合开发WEB应用。cppweb在读数据采用epoll网络模型,以任务队列的方式处理具体请求,回包也在任务队列中处理,理论上cppweb可支持单机10000个以上的并发连接。 cppweb易拓展,作者开发Java、Python等模块,用于支持Java、Python等语言开发cgi程序,开发者可以直接使用C/C++、Java、Python等语言进行混合开发。 https://gitee.com/wangkai0_0/cppweb
6.java从入门到精通java语言程序设计javaweb框架开发教程华C语言程序设计从入门到精通 零基础自学C语言编程入门教程 java从入门到精通 java语言程序设计 java web框架开发教程 华研教育明日科技 C语言程序设计从入门到精通 零基础自学C语言编程入门教程 java从入门到精通 java语言程序设计 java web框架开发教程 分享https://h5.youzan.com/v2/goods/277l3r9wjcx0i
7.C/CWeb框架很明显,这个框架比较的麻烦,但是就是有这些开发人员,它们坚持信念,非要完成似乎是不可能的事情。没有人怀疑C++的力量,但是没有人相信C++能够在Web的上层能够做得更好(虽然以前甚至现在还有人在用C/C++ CGI, 但是我可以想象你痛苦的表情),至少现在没有象Java和.NET那样。注定C/C++是做低层的吗?http://www.360doc.com/content/18/0701/15/6828497_766851335.shtml
8.用C一步步开发web服务器(1)对于php程序员,对于web服务器来说再熟悉不过了,apache,nginx。。但是内心一直想开发出一个属于自己的web服务器,所以借此机会,用c开发出了一款web服务器。作为1.0版本,他实现了以下功能 完成基础的tcp连接,支持基础的client与其连接 使用fork()来支持并发访问服务器 https://www.jianshu.com/p/ef6f07585b7c
9.c做网站(手把手教你做网站)网站制作知识资讯如果想要使用C++来开发Web应用程序,则需要掌握以下技能: 熟悉C++编程语言及其相关框架和库。 了解Web服务器端相关知识,如HTTP协议、Socket网络编程等。 熟悉数据库设计及操作,并掌握SQL语言。 具备前端开发知识,如HTML、CSS、JavaScript等。 C++做网站的实现方式 https://www.semjishu.com/5452.html
10.Avatar——元宇宙和Web3的超级入口拥有一个元宇宙通用avatar或将成为未来普通用户进入web3世界体验的第一站,开发类似模拟人生的游戏化机制来引导新手使用defi,nft产品,而不再进行晦涩难懂的链上交互帮助web3走向主流。 c. 社区&营销 从运营角度说avatar, 虚拟人项目的成功大部分是归功于社区和运营。通过brand & community可以找到最初的种子用户,凝聚https://www.panewslab.com/zh/articledetails/8r628qab.html
11.Python教学Web开发教学全栈开发教学C语言教学汇编教学Win鱼C工作室为大家提供最有趣的编程视频教学。http://www.fishc.com/
12.C++应用软件开发从入门到精通详解其中,Visual Studio 2010是比较经典的版本,这个版本比较稳定且使用流畅,很多公司都在用这个版本,但该版本距今已经有10多年了,很多开源的C/C++代码已经不再支持。比如著名的WebRTC库最低只支持到Visual Studio 2017,已经不再支持Visual Studio 2010了。很多公司为了使用新版本的开源库,为保持库与库之间开发工具的统一http://www.zsrm.cn/news/165779.html
13.奉贤区2022年“人人乐业”周五微聘会,为你而来3、具备视频监控平台或视频联动开发经验; 4、熟练使用Java框架和工具,如Spring boot、Spring Cloud、SpringMVC、Struts、Hibernate、Mybatis等; 5、熟悉数据清洗原理并熟练掌握相关优化方案,熟悉数据库设计,熟练掌握SQL语句。 Web前端开发 人数:2人 月薪:10000-18000元/月 https://www.jfdaily.com/sgh/detail?id=673886
14.Python教学Web开发教学全栈开发教学C语言教学汇编教学Win『用Python做植物大战僵尸』作品展示 纳尼!「FishC」AI小助手来啦!!学习/娱乐/排忧解难 必备佳品~ 【II】请用一行代码找出猪队友 Python爬取B站视频+抓包过程分享 新手必备的 Python 语法总结图|【鱼C特供】 Pygame: 康威生命游戏 【I】添加一行代码,提高10000倍以上的执行效率 https://fishc.com.cn/
15.C设计讲解C语言程序辅导讲解解析C讲解国外C辅导Web开发C设计讲解、C语言程序辅导讲解、解析C、讲解国外C辅导Web开发|调试Matlab程序程序辅导http://www.7daixie.com/2018070210833171.html
16.java中间代码生成器java自动生成代码工具java代码生成器能生成c语言代码吗?用什么方法能实现呢? 按照我的理解,可以的,代码生成器是跨平台,而且是跨语言的(至少是跨文本语言的,UML暂时不好说,)。 代码生成器作为一种开发工具,一般不直接作为程序的一部分,通常也不直接或间接(如通过AOP)被程序调用,他是通过编程的方式生成所需要的代码,然后将生成的代码https://www.xiuzhanwang.com/a1/JavaScript/17047.html
17.Web程序基本概念从事后端开发的Java程序员,目前技术栈主要涉及Java、SQL、Spring MVC、MyBatis等。 4.开发Web应用程序需要解决的三个基本问题 (1)如何将信息呈现给用户以及如何引导用户提交信息 (2)在服务器端如何获取及处理用户提交的信息 (3)在服务器端如何与数据库交互 5.C/S架构 6.B/S架构https://cooc.cqmu.edu.cn/Course/KnowledgePoint/15742.aspx
18.Linux超macOS最讨厌Angular.js框架,调查了7万名开发者的近日,全球知名程序员问答社区 Stack Overflow 对来自全球 180 个国家/地区的 73268 名软件开发者调查后,重磅发布了《2022 Developer Survey》报告,剖析当代开发者如何学习与升级技能,以及正在使用的工具现状。在此,也希望疾步行走中的大家不妨适当停下脚步看看当前的整体开发趋势。https://36kr.com/p/1797480144044544
19.今晚七点metaRTC的发展和应用嘲探讨腾讯云开发者社区点击上方“LiveVideoStack”关注我们 metaRTC是一个自主研发的支持WebRTC/Srt/Rtmp的RTC SDK库,包含多种视音频编解码和处理等,在安防监控、直播、视频会议等方面有较广泛的应用。同时,metaRTC3.0将在近期形成稳定版本,metaRTC将进入4.0时代。4月21日晚七点,我们邀请到了metaRTC作者、WebRTC自主研发资深专家 杨高https://cloud.tencent.com/developer/article/1985859