位置: 编程技术 - 正文
推荐整理分享Linux系统下自行编译安装MySQL及基础配置全过程解析(linux 自启),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux自动化命令,linux自动执行命令,linux自动化,linux系统自启动在哪里设置,linux 自动运行命令,linux自毁,linux自动执行程序,linux系统自启动在哪里设置,内容如对您有帮助,希望把文章链接给更多的朋友!
安装依赖:
CentOS:
Ubuntu:(使用ubuntu下面有不少需要root权限,请注意)
添加MySQL系统用户
提前建立好相关目录
下载MySQL源代码:
配置
配置释义:
-DCMAKE_INSTALL_PREFIX=/usr/local/server/mysql-5.6. 设置安装目录-DMYSQL_DATADIR=/data/mysql 设置数据库存放目录-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 设置UNIX socket 目录-DMYSQL_USER=mysql 设置运行用户-DDEFAULT_CHARSET=utf8 设置默认字符集,默认latin1-DEFAULT_COLLATION=utf8_general_ci 设置默认校对规则,默认latin1_general_ci-DWITH_INNOBASE_STORAGE_ENGINE=1 添加InnoDB引擎支持-DENABLE_DOWNLOADS=1 自动下载可选文件,比如自动下载谷歌的测试包-DMYSQL_TCP_PORT= 设置服务器监听端口,默认-DSYSCONFDIR=/data/etc 设置my.cnf所在目录,默认为安装目录
更多参数执行 # cmake . -LH 或者查看官方说明
Note:
执行过程中会出现:
解决方法:cd mysql目录下面会发现有一个source_downloads目录,需要解压unzip gmock-1.6.0.zip,然后再重新执行上述配置过程。当然你也可以去掉-DENABLE_DOWNLOADS=1这个选项,不编译谷歌的测试包也没有什么问题,但是之前的某些版本会出现无法编译的问题。
编译安装
建立链接文件,方便以后使用和升级:
设置权限:
初始化数据库
这时候会出现以下警告,下面配置my.cnf会解决这个问题详情请查看 MySQL 5.6 中 TIMESTAMP 的变化
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).配置启动项目:
修改安装目录下my.cnf,部分参数需要结合实际情况进行修改
被注释掉的部分语句,需要结合业务和硬件资源进行修改,所以先占位,使用默认值即可。my.cnf文件中不能出现拼写错误,否则,接下来启动会出现很多意想不到的错误,如果出现无法启动请参看:mysql-error.log文件。权限设置不当也会导致启动失败。
启动前,再次确认一遍权限:
很有可能现在my.cnf的权限不是mysql,同时检查一下/etc/my.cnf是否存在,如果存在则删除!!!
启动mysql:
添加环境变量
安全设置(设定初始密码,移除匿名用户,移除测试数据库):
添加开机启动
CentOS:
Ubuntu:
配置须知:
MySQL有大量可以修改的配置选项,通常只需要把基本的项配置正确,应该将更多的时间花在schema的优化、索引上,以及查询设计上。正确地配置MySQL的基本配置项后,再花力气去修改其他配置选项的收益通常就比较小了。过度优化的服务器导致的潜在风险很大,容易频繁崩溃、运行缓慢。MySQL大多数默认配置选项已经是最佳配置了,所以最好不要做太多的改动,上文设置的参数对于大多数人已经够多了。没有一劳永逸的配置,随着数据库内数据、用户数量的变化,过一段时间后,可以有选择地调整数据库的配置。基本配置选项详解:
socket和pid_file 文件如果不指定位置,放在默认编译位置,在不同的MySQL版本里可能会导致一些错误
设定默认存储引擎,创建表的时候最好显式进行存储引擎的配置
InnoDB最重要的两个选项为缓冲池大小innodb_buffer_pool_size和 日志文件大小innodb_log_file_size,默认值一般都太小。
如果大部分表都是InnoDB表,InnoDB缓冲池的设置或许比其他任何东西都需要内存。InnoDB并不仅仅缓存索引:它还会缓存数据、自适应哈系索引、插入缓冲(Insert Buffer)、锁,以及其他内部数据结构。InnoDB还使用缓冲池来帮助延迟写入,合并多个写入操作,一起顺序写回。总之,InnoDB严重依赖缓冲池,必须分配足够内存。
Note:缓冲池越大,预热和关闭都需要很长时间。
InnoDB使用日志来减少事务提交的开销。因为日志已经记录了事务,就无须在每个事务提交时把缓冲池的胀快刷新到磁盘中。InnoDB用日志把随机I/O变成顺序I/O。一旦日志安全写到磁盘,事务就持久化了。如果断电,InnoDB可以重放日志并且恢复已经提交的事务。整体日志大小受控于innodb_log_file_size和innodb_log_file_in_group两个参数之乘积。一般需要设置几百MB甚至上GB。作为经验法则,一般日志文件全部大小,应该足够容纳服务器一小时的活动内容。
缓冲池大小设置方法:从服务器总内存开始减去操作系统占用内存和其他服务占用内存(如果还有其他服务的话)减去MySQL自身需要内存,例如为每个查询操作分配一些缓冲。减去足够让操作系统缓存InnoDB日志文件的内存,至少是足够缓存最近经常访问的部分。再减去一些可以缓存二进制日志的最后一部分,以防止复制产生了延迟,备库可能读取主库上旧的二进制日志文件,给主库内存造成压力。减去其他MySQL缓冲和缓存需要的内存,如MyISAM键缓存(key_buffer_size),或者查询缓存(query cache)处以%,向下取舍一个合理值。
Note:设置不需要很精确,而且宁可谨慎,而不要设置过大,如果设置少了%可能只产生很小的影响,但是如果大了%则可能造成很严重的问题:内存交换、磁盘抖动、内存耗尽和死机。
MyISAM自身只缓存索引,不缓存数据(依赖操作系统缓存数据)。如果大部分为MyISAM表,就应该分配较大key_buffer_size。再分配多大内存前,首先了解一下,MyISAM占用了多大的空间,肯定不需要分配比需要缓存的索引数据还大的内存(有时候为数据量扩增预留一些,会设置比较大)。有两个方法计算索引大小:使用SQL语句,查询INFORMATION——SCHEMA表的INDEX_LENGTH字段,把他们相加即可。
使用的UNIX系统,则使用以下命令
键缓存需要存储多大的值?不要超过索引总大小,也不要超过为操作系统缓存保留的总大小。取两者较小值。
缓冲区使用率计算,通过SHOW STATUS和SHOW VARIABLES命令查看以下变量:
如果服务器运行很长一段时间之后,还是没有使用完所有缓冲键,就可以把缓冲键调小一点。
键缓冲命中率从经验上来讲,每秒未命中次数更有用,假定一个磁盘每秒可以产生个随机读,每秒5次缓存未命中则不会导致I/O繁忙,每秒次则可能导致I/O繁忙。计算公式:
设定默认字符集和编码
以下选项设定仅使用IP来链接MySQL服务器,省略了DNS查询时间阅读材料: was known as table_cache in MySQL 5.1.2 and earlier.table_open_cache应该设置足够大,避免总是重新打开和解析表定义。如果Open_tables的值每秒变化很大,那么table_open_cache可能设置偏小。这个值从max_connections的倍开始设置比较好,但是,大部分情况下不要超过.
如果在段时间内不断有错误链接,比如:权限错误,应用配置出错等。客户端达到max_connect_errors设定次数,就会被加入黑名单,无法连接,直到再次刷新主机缓存。(如何操作?)可以有效防止暴力破解密码。
在典型的Linux系统上我们把open_files_limit设置的尽可能大。现代操作系统中打开文件句柄开销都较小。如果这个参数设置不够大,会出现经典的号错误:”too many open files”。
linux下 root 登录 MySQL 报错的问题 最近在centOS7上,通过yum安装了mysql,安装成功后,使用root登录,出现了如下报错:ERROR():Accessdeniedforuser'root'@'localhost'(usingpassword:NO)mysql版本为:Ve
Mysql5.7修改root密码教程 版本更新,原来user里的password字段已经变更为authentication_string版本更新缘故,好多网上的教程都不适用了,甚至连官网的文档也不是能够顺利操作的。
详解MySQL的用户密码过期功能 PaymentCardIndustry,即支付卡行业,PCI行业表示借记卡、信用卡、预付卡、电子钱包、ATM和POS卡及相关的业务。PCIDSS,即PCI数据安全标准(PaymentCardIndustryDat
标签: linux 自启
本文链接地址:https://www.jiuchutong.com/biancheng/319741.html 转载请保留说明!友情链接: 武汉网站建设