CentOS源码部署系列(四)安装MySQL

[3]MySQL源码安装

查看服务器以前有没有mysql或者mariaDB

rpm -qa | grep -i mysql
rpm -qa | grep -i mariadb

删除以前的数据库

rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64
#注:如上命令删除不成功,有别的软件依赖无法删除时,如下操作:
sudo yum remove  mariadb-libs-5.5.50-1.el7_2.x86_64

#如果有,清除以往的数据库配置
sudo mv /etc/my.cnf /etc/mysql.cof.back

下载MySQL社区版源码

cd /download

#CentOS下载Linux通用的版本就可以了
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34.tar.gz

#tar解压
tar -zxvf mysql-5.7.34.tar.gz

#进入mysql文件夹
cd mysql-5.7.34

安装依赖

sudo yum install -y cmake make gcc gcc-c++ wget ncurses-devel cmake make perl ncurses-devel openssl-devel bison-devel libaio libaio-devel

创建应用目录和数据目录

sudo mkdir -p /usr/local/mysql
sudo mkdir /usr/local/mysql/data

创建mysql用户和用户组

# 创建用户组
groupadd mysql
# 创建mysql用户,所属组为mysql
useradd -s /bin/bash -m -g mysql mysql

创建MySQL目录

sudo mkdir -p /usr/local/mysql/data/bin_log
sudo mkdir -p /usr/local/mysql/data/db_file
sudo mkdir -p /usr/local/mysql/data/innodb_log
sudo mkdir -p /usr/local/mysql/data/innodb_ts
sudo mkdir -p /usr/local/mysql/data/log
sudo mkdir -p /usr/local/mysql/data/relay_log
sudo mkdir -p /usr/local/mysql/data/tmpdir
sudo mkdir -p /usr/local/mysql/data/undo_log

创建的目录的所属用户与所属组为mysql:mysql

sudo chown -R mysql:mysql /usr/local/mysql

cmake编译

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data  \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_BOOST=boost 

#选项说明:
-DCMAKE_INSTALL_PREFIX :安装路劲
-DMYSQL_DATADIR : 数据目录
-DMYSQL_TCP_PORT :端口号
-DMYSQL_UNIX_ADDR :套链接文件位置

#注:如果编译出现错误,请先删除CMakeCache.txt后,再重新编译:
rm -rf CMakeCache.txt

#如果安装报错:tar -zxvf  boost_1_59_0.tar.gz 无法解压 请下载可用文件:
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

#同时cmake 选项:
#-DDOWNLOAD_BOOST=1 \
#-DWITH_BOOST=/usr/local/boost
#改成:
-DWITH_BOOST=/usr/local/boost/boost_1_59_0.tar.gz

#重新Cmake。
#如果出现下面的提示就表示成功生成了编译环境:
-- Configuring done
-- Generating done

编译安装后进入目录

sudo make && sudo make install

cd /usr/local/mysql

数据库初始化操作

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

2021-05-26T00:52:37.703161Z 1 [Note] A temporary password is generated for root@localhost: ej6,Hg5&dSFZ
注: root@localhost: 为初始密码(记录下)

设置开机自启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chmod +x /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/* /usr/local/bin/
ln -s /usr/local/mysql/bin/* /usr/bin/
chkconfig mysqld on

启动测试

systemctl start mysql
或者
service mysql start

初始化MySQL

编写配置文件

sudo vim /usr/local/mysql/my.cnf

[client]
port = 3306

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
plugin_dir=/usr/local/mysql/lib/plugin
log-error=/usr/local/mysql/data/error.log

#默认存储引擎INNODB
default-storage-engine=INNODB

skip-name-resolve
#禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!
back_log = 384
#back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
key_buffer_size = 256M
#key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低!
max_allowed_packet = 4M
thread_stack = 256K
#table_cache = 128K
sort_buffer_size = 6M
#查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占,如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size = 4M
#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
join_buffer_size = 8M
#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
myisam_sort_buffer_size = 64M
thread_cache_size = 64
query_cache_size = 64M
#指定MySQL查询缓冲区的大小。可以通过在MySQL控制台观察,如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。
tmp_table_size = 256M
max_connections = 768
#指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。
max_connect_errors = 10000000
wait_timeout = 10
#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
#thread_concurrency = 8
#该参数取值为服务器逻辑CPU数量*2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4*2=8
##skip-networking
#开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!
innodb_flush_log_at_trx_commit=1
#设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1
innodb_log_buffer_size=2M
#默认为1M
innodb_thread_concurrency=8
#你的服务器CPU有几个就设置为几,建议用默认一般为8
read_rnd_buffer_size=16M
#默认为256K
sort_buffer_size=32M
#默认为256K


service mysql restart

并在my.cnf中开启或添加如下选项


my.cnf配置.png

配置mysql快捷命令

ln -s /usr/local/mysql/bin /usr/local/xxx
ln -s /usr/local/mysql/lib /usr/local/xxx

启动mysql

service mysqld start

登陆MySQL并修改密码

mysql -uroot  -p 
# 输入初始化最后的密码
# 登陆mysql需要修改root密码,否则会出现下列情况:
root@localhost : (none) 11:16:52> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

#修改root密码
#三选一
1.set password='MYSQL'; 
2.ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
3. SET PASSWORD = PASSWORD('新密码');)

#刷新权限
FLUSH PRIVILEGES;

关闭mysql

service mysqld stop

启动MySQL远程访问

#1.防火墙开启3306端口(永久生效)
firewall-cmd --add-port=8001/tcp --permane
参考[https://jingyan.baidu.com/article/adc81513944addf723bf73af.html](https://jingyan.baidu.com/article/adc81513944addf723bf73af.html)

#2.添加MySQL用户和授权:
参考 [https://www.cxiansheng.cn/server/306](https://www.cxiansheng.cn/server/306)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容