大家好,今天来为大家解答mssql企业网站源码分享这个问题的一些问题点,包括sql 网站也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
一、系统环境要求
官方说明:https://dev.mysql.com/doc/refman/5.7/en/source-installation-prerequisites.html
CMake:编译工具,用作所有平台上的构建框架。需要SSL库来支持加密连接,用于生成随机数的熵以及其他与加密有关的操作。默认情况下,构建使用主机系统上安装的OpenSSL库。BoostC++库是构建MySQL所必需的。MySQL编译需要特定的Boost版本。5.7.34版本需要的Boost版本是1.59.0需要ncurses库,一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。足够的可用内存。若编译时出现“内部编译器错误”之类的问题,则可能是内存太小。如果在虚拟机上编译,请尝试增加内存分配。需要Git版本控制系统来获取开发源代码。
本文中使用本地VM虚机部署测试。
OS:CentOSLinuxrelease7.8.2003(Core)
虚机配置:2核CPU、4G内存
关闭Selinux。
二、基础环境
1.清理环境(清理系统自带的Mariadb和boost)
CentOS7版本的系统默认自带安装了MariaDB,需要先清理。
查询已安装的mariadb
rpm-qa|grepmariadb\n或\nyumlistinstalled|grepmariadb
卸载mariadb包,文件名为上述命令查询出来的文件
rpm-e–nodepsmariadb-libs-5.5.65-1.el7.x86_64\n或\nyum-yremovemariadb-libs.x86_64
检查boost版本,如果有,则卸载boost-*等库
rpm-qaboost*\nyum-yremoveboost-*
2.基础库及依赖包文件
rpm-ivhhttp://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm\nyum-yinstallmakepatchgccgcc-c++gitlibaiolibaio-develncursesncurses-devel\\\nperlbisonbison-devellibxmllibxml-devellibxml2libxml2-develzlibzlib-devel\\\nlibgcryptglibcglibc-develglib2glib2-develflexbzip2*curl*openssl-developenssl
3.安装cmake(编译工具)
官网:https://cmake.org/
cd/data/tools\nwgethttps://cmake.org/files/v3.8/cmake-3.8.2.tar.gz\ntarxfcmake-3.8.2.tar.gz\ncdcmake-3.8.2\n./bootstrap\ngmake\nmakeinstall
4.安装jemalloc(内存管理)
官网:http://jemalloc.net/
内存分配器,适合多线程下的内存分配管理软件。与其它内存分配器相比,它最大的优势在于多线程情况下的高性能以及内存碎片的减少。
cd/data/tools\nwgethttps://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2\ntarxjfjemalloc-5.2.1.tar.bz2\ncdjemalloc-5.2.1\n./autogen.sh\nmake&&makeinstall\necho&39;>/etc/ld.so.conf.d/local.conf\nldconfig
5.安装Boost库
官网:https://www.boost.org/
无需最新版本,本文中编译安装的5.7.34版本对应需要的boost为1.59.0。
cd/data/tools\nwgethttps://udomain.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz\ntarxfboost_1_59_0.tar.gz\nchown-Rroot.rootboost_1_59_0\nchmod-R755boost_1_59_0\nmvboost_1_59_0/usr/local/boost159
三、安装配置MySQL
1.添加mysql组及用户
groupadd-rmysql\nuseradd-gmysql-r-s/sbin/nologin-M-d/data/mysqlmysql
2.创建相关目录及修改目录属性
数据目录
mkdir-p/data/mysql
修改目录属性
chownmysql.mysql/data/mysql\nchmod0700/data/mysql
3.安装MySQL
下载解压
cd/data/tools\nwgethttps://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.34.tar.gz\ntarxfmysql-5.7.34.tar.gz\ncdmysql-5.7.34
Cmake配置
cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.34\\\n-DMYSQL_DATADIR=/data/mysql-DSYSCONFDIR=/etc\\\n-DMYSQL_TCP_PORT=3306\\\n-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.7.34/mysql.sock\\\n-DWITH_EXTRA_CHARSETS=all\\\n-DDEFAULT_CHARSET=utf8mb4\\\n-DDEFAULT_COLLATION=utf8mb4_general_ci\\\n-DWITH_INNOBASE_STORAGE_ENGINE=1\\\n-DWITH_MYISAM_STORAGE_ENGINE=1\\\n-DWITH_ARCHIVE_STORAGE_ENGINE=1\\\n-DWITH_FEDERATED_STORAGE_ENGINE=1\\\n-DWITH_BLACKHOLE_STORAGE_ENGINE=1\\\n-DWITH_PERFSCHEMA_STORAGE_ENGINE=1\\\n-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1\\\n-DWITH_ZLIB=bundled-DWITH_SSL=system\\\n-DENABLED_LOCAL_INFILE=1\\\n-DWITH_DEBUG=0\\\n-DMYSQL_MAINTAINER_MODE=0\\\n-DWITH_EMBEDDED_SERVER=0\\\n-DINSTALL_SHAREDIR=share\\\n-DDOWNLOAD_BOOST=0\\\n-DWITH_BOOST=/usr/local/boost159\\\n-DCMAKE_EXE_LINKER_FLAGS=&34;
编译安装
make\nmakeinstall\ncd/usr/local/\nln-sfmysql-5.7.34mysql
备注:若make出错后要重新运行配置,需要删除CMakeCache.txt文件。
makeclean\nrm-fCMakeCache.txt
Cmake配置参数说明
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.34:MySQL安装目录路径。\n-DMYSQL_DATADIR=/data/mysql:MySQL数据目录路径,初始化时目录必须为空。\n-DSYSCONFDIR=/etc:指定配置文件my.cnf的安装路径。\n-DMYSQL_TCP_PORT=3306:指定MySQL服务TCP/IP连接的端口号为3306。\n-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.7.34/mysql.sock:指定套接字连接的Unix套接字文件路径。\n-DWITH_EXTRA_CHARSETS=all:指定包括的额外字符集,all表示所有。\n-DDEFAULT_CHARSET=utf8mb4:指定默认字符集为utf8mb4,因为历史遗留问题,MySQL中的utf8不是真正的utf8,而是阉割版的,最长只有三个字节,当遇到四个字节的utf8编码时,会导致存储异常。从5.5.3开始,使用utf8mb4实现完整的utf8。\n-DDEFAULT_COLLATION=utf8mb4_unicode_ci:指定排序规则,默认为utf8mb4_0900_ai_ci,属于utf8mb4_unicode_ci的一种。0900指的是Unicode校对算法版本,ai是指口音不敏感(as表示敏感),ci指不区分大小写(cs表示区分)。utf8mb4_unicode_ci表示基于标准的的Unicode来排序和比较,能够在各种语言之间精确排序,而utf8mb4_general_ci遇到某些特殊的字符集时排序结果可能不一致,准确性较差,但是性能较好,比较和排序时候更快。\n-DWITH_INNOBASE_STORAGE_ENGINE=1:启用INNOBASE存储引擎。\n-DWITH_MYISAM_STORAGE_ENGINE=1:启用MYISAM存储引擎。\n-DWITH_ARCHIVE_STORAGE_ENGINE=1:启用ARCHIVE存储引擎\n-DWITH_FEDERATED_STORAGE_ENGINE=1:启用FEDERATED存储引擎。\n-DWITH_BLACKHOLE_STORAGE_ENGINE=1:启用BLACKHOLE存储引擎。\n-DWITH_PERFSCHEMA_STORAGE_ENGINE=1:启用PERFSCHEMA存储引擎。\n-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1:不启用或不编译EXAMPLE存储引擎。EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。\n-DWITH_ZLIB=bundled:启用libz库支持,使用与发行版捆绑在一起的zlib库。\n-DWITH_SSL=system:启用ssl库支持,使用系统的SSL库,若不使用系统的请自定义路径。\n-DENABLED_LOCAL_INFILE=1:表示能使用loaddata命令。\n-DWITH_DEBUG=0:禁用debug调试支持。\n-DMYSQL_MAINTAINER_MODE=0:关闭特定于MySQL维护人员的开发环境。\n-DWITH_EMBEDDED_SERVER=0:不构建libmysqld嵌入式服务器库。从MySQL5.7.17开始不推荐使用libmysqld嵌入式服务器库,并且已在MySQL8.0中将其删除。\n-DINSTALL_SHAREDIR=share:指定aclocal/mysql.m4安装目录\n-DDOWNLOAD_BOOST=0:禁止下载Boost源。\n-DWITH_BOOST=/usr/local/boost159:指定Boost库目录位置。\n-DCMAKE_EXE_LINKER_FLAGS=&34;:使用jemalloc优化MySQL内存管理。
四、配置MySQL
1.创建配置文件
vi/etc/my.cnf\n//输入以下内容\n[client]\nport=3306\nsocket=/usr/local/mysql/mysql.sock\ndefault-character-set=utf8mb4\n\n[mysqld]\nport=3306\nsocket=/usr/local/mysql/mysql.sock\nbasedir=/usr/local/mysql\ndatadir=/data/mysql\ncharacter-set-server=utf8mb4\ncollation-server=utf8mb4_general_ci\ninit_connect=&39;\nserver-id=1\nlog-slave-updates=true\nskip-external-locking\nskip-name-resolve\nback_log=300\ntable_open_cache=128\nmax_allowed_packet=16M\nread_buffer_size=8M\nread_rnd_buffer_size=64M\nsort_buffer_size=16M\njoin_buffer_size=8M\nkey_buffer_size=128M\nthread_cache_size=16\nlog-bin=mysql-bin\nbinlog_format=row\n主从\nlog-slave-updates=true\n慢日志\nslow_query_log=on\nlong_query_time=1\nslow_query_log_file=/data/mysql/db-slow.log\ngtid_mode=ON\nenforce_gtid_consistency=ON\nexpire_logs_days=7\ndefault_storage_engine=InnoDB\ninnodb_buffer_pool_size=1G\ninnodb_data_file_path=ibdata1:10M:autoextend\ninnodb_file_per_table=on\ninnodb_write_io_threads=4\ninnodb_read_io_threads=4\ninnodb_thread_concurrency=8\ninnodb_purge_threads=1\ninnodb_flush_log_at_trx_commit=1\ninnodb_log_buffer_size=8M\ninnodb_log_file_size=512M\ninnodb_log_files_in_group=3\ninnodb_max_dirty_pages_pct=90\ninnodb_lock_wait_timeout=60\nmax_connections=5000\ninteractive_timeout=28800\nwait_timeout=28800\nsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\nsymbolic-links=0\n时间参数\nlog_timestamps=SYSTEM\n\n[mysqldump]\nquick\nmax_allowed_packet=32M\n\n[mysql]\nno-auto-rehash\ndefault-character-set=utf8mb4\n\n[myisamchk]\nkey_buffer_size=64M\nsort_buffer_size=64M\nread_buffer=8M\nwrite_buffer=8M\n\n[mysqlhotcopy]\ninteractive-timeout\n\n[mysqld_safe]\nlog-error=/data/mysql/mysql_err.log\npid-file=/data/mysql/mysqld.pid
注:①上述配置仅供参考,请根据实际环境需求修改参数。
②query_cache_size此参数配置在MySQL5.7.20就已经过时了,而在MySQL8.0之后就已经被移除了。
2.权限设置
cd/usr/local/mysql\nchown-Rmysql:mysql.
3.初始化数据库
/usr/local/mysql/bin/mysqld–initialize-insecure–user=mysql–basedir=/usr/local/mysql–datadir=/data/mysql
注:a.之前版本mysql_install_db是在mysql_basedir/script下,5.7放在了mysql_install_db/bin目录下,且已被废弃
b.&34;会生成一个随机密码(~/.mysql_secret),而&34;不会生成密码
c.–datadir目标目录下不能有数据文件
初始化完成提示:
开启SSL连接,安全性提高了,但是相对地降低了QPS,还是比较影响性能的,谨慎选择!本文中不开启!
/usr/local/mysql/bin/mysql_ssl_rsa_setup
4.安装MySQL的man帮助文件、头文件及lib库
cd/usr/local/mysql\n手册页帮助文件\necho&34;>>/etc/man.config\n头文件\nln-sv/usr/local/mysql/include/usr/include/mysql\nlib库文件\necho&39;>/etc/ld.so.conf.d/mysql.conf\n加载动态库文件\nldconfig
5.配置MySQL环境变量
echo&39;>>/etc/profile\necho&39;>>/etc/profile\nsource/etc/profile
6.配置MySQL服务管理命令
cd/usr/local/mysql\ncpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
7.启动数据库
/etc/init.d/mysqldstart\n/usr/local/mysql/bin/mysql–version&&echo-e&34;
8.验证jemalloc优化MySQL是否生效
lsof-n|grepjemalloc|grepmysqld
五、服务管理
启动:/etc/init.d/mysqldstart\n关闭:/etc/init.d/mysqldstop\n重启:/etc/init.d/mysqldrestart\n查看状态:/etc/init.d/mysqldstatus\n配置开机启动:echo&34;>>/etc/rc.local
六、配置root账号密码
设置本机登录密码
mysql-uroot-p\n//因初始化数据时没有设置密码,可以按两次确认键进入数据库\nusemysql;\nupdateusersetauthentication_string=password(&39;)whereuser=&39;andhost=&39;;\nFLUSHPRIVILEGES;
MySQL5.7.5或更早之前的版本使用下面的命令设置密码
updateusersetpassword=PASSWORD(&39;)whereUser=&39;;
***特别提醒注意的一点:MySQL5.7.6以及最新版本数据库下的user表中已经没有Password字段了,而是将加密后的用户密码存储于authentication_string字段。而且密码的复杂性要求高,需有大小字母、数字、特殊字符。
设置远程登录密码
GRANTALLPRIVILEGESON*.*TO&39;@&39;IDENTIFIEDBY&39;WITHGRANTOPTION;\nFLUSHPRIVILEGES;
七、测试
1.创建测试数据库
mysql-uroot-p\n//输入上述步骤中设置的密码登录数据库\n创建test库,指定字符集及排序规则\nCREATEDATABASEtestDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;\n查看\nshowdatabases;
2.创建普通用户及授权
mysql-uroot-p\n//输入上述步骤中设置的密码登录数据库\n切换至mysql库\nusemysql;\n创建用户\nCREATEUSER&39;@&39;IDENTIFIEDBY&39;;\n授权\nGRANTselect,insert,update,delete,createontest.*to&39;@&39;;\n刷新权限\nFLUSHPRIVILEGES;\n查看用户\nselectuser,hostfromuser;\n查看test用户权限\nshowGRANTSfor&39;@&39;;
OK,关于mssql企业网站源码分享和sql 网站的内容到此结束了,希望对大家有所帮助。
