• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

mysql二进制指定目录安装数据库及MySQL配置【显哥出品,必为精品】

MySQL lixian 1年前 (2020-06-09) 810次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、mysql启动关闭

1.mysql启动流程

/etc/init.d/mysqld start  ------>  mysql.server  ------>  mysqld_safe  ------>  mysqld
systemctl start mysql   ------>  mysqld_safe  ------>  mysqld
mysqld_safe --defaults-file=/etc/my.cnf  ------>  mysqld_safe  ------>  mysqld

2.关闭数据库

/etc/init.d/mysqld stop
systemctl stop mysql
mysqladmin -uroot -p123 shutdown

#不建议使用的关闭方法
kill -9 mysqlpid
killall mysqld
pkill mysqld

二、mysql二进制指定目录安装数据库

1.下载源码包

[root@db02 ~]# wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

2.安装依赖

[root@db02 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf

3.解压

[root@db02 ~]# tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

4.创建自定义目录

[root@db02 ~]# mkdir /server

5.移动数据

[root@db02 ~]# mv mysql-5.6.46-linux-glibc2.12-x86_64 /server/mysql-5.6.46
[root@db02 ~]# ln -s /server/mysql-5.6.46 /server/mysql

6.创建用户

[root@db02 ~]# useradd -M -s /sbin/nologin mysql

7.拷贝配置文件和脚本

[root@db02 ~]# cd /server/mysql/support-files/
[root@db02 support-files]# cp mysql.server /etc/init.d/mysqld
[root@db02 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y

8.初始化数据库

[root@db02 support-files]# cd /server/mysql/scripts/
[root@db02 scripts]# ll
total 36
-rwxr-xr-x 1 7161 31415 34977 Sep 27  2019 mysql_install_db
[root@db02 scripts]# ./mysql_install_db --user=mysql --basedir=/server/mysql --datadir=/server/mysql/data

9.启动数据库

[root@db02 scripts]# /etc/init.d/mysqld start
/etc/init.d/mysqld: line 244: my_print_defaults: command not found
/etc/init.d/mysqld: line 264: cd: /usr/local/mysql: No such file or directory
Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)

#启动报错,因为数据库在cmake阶段指定的目录都是 /usr/local,所以启动文件与我们指定的目录不一致

#修改启动文件
[root@db02 scripts]# sed -i 's#/usr/local#/server#g' /server/mysql/bin/mysqld_safe /etc/init.d/mysqld

#再次启动数据
[root@db02 scripts]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/server/mysql/data/db02.err'.
 SUCCESS! 

10.配置system管理mysql

#1.system配置
[root@db02 ~]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/server/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

#2.重新加载启动列表
[root@db02 ~]# systemctl daemon-reload

11.system启动失败

#因为除了我们修改的启动文件,还有很多文件指定了 /usr/local
[root@db02 ~]# grep -r '/usr/local' /server/mysql/*

12.配置mysql的配置文件

[root@db02 ~]# vim /etc/my.cnf
[mysqld]
basedir=/server/mysql
datadir=/server/mysql/data

[root@db02 ~]# systemctl start mysql
[root@db02 ~]# !ps
ps -ef | grep mysql
mysql      7988      1 18 18:39 ?        00:00:00 /server/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root       8011   7404  0 18:39 pts/0    00:00:00 grep --color=auto mysql

13.配置环境变量

[root@db02 ~]# vim /etc/profile.d/mysql.sh
export PATH=/server/mysql/bin:$PATH
[root@db02 ~]# source /etc/profile

三、mysql配置

1.配置mysql的地方

1.cmake阶段:cmake编译安装时指定目录到程序

2.配置文件:/etc/my.cnf ... 等

3.命令行指定配置
--skip-grant-tables 
--skip-networking
--datadir=/application/mysql/data
--basedir=/application/mysql
--defaults-file=/etc/my,cnf
--pid-file=/application/mysql/data/db01.pid
--socket=/application/mysql/data/mysql.sock
--user=mysql
--port=3306
--log-error=/application/mysql/data/db01.err

2.配置文件

1)配置文件读取顺序

/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
defaults-extra-file (类似include)
~/.my.cnf

2)配置文件生效顺序

~/.my.cnf
defaults-extra-file (类似include)
$MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
/etc/mysql/my.cnf
/etc/my.cnf

3)配置文件生效顺序测试

#配置~/.my.cnf
[root@db02 ~]# vim ~/.my.cnf 
[mysqld]
server_id=1

#配置$basedir/my.cnf
[root@db02 ~]# cat /server/mysql/my.cnf 
[mysqld]
server_id=2

#配置/etc/mysql/my.cnf
[root@db02 ~]# cat /etc/mysql/my.cnf 
[mysqld]
server_id=3

#配置/etc/my.cnf
[root@db02 ~]# cat /etc/my.cnf
[mysqld]
server_id=4

#重启数据库(不要使用system,因为里面指定/etc/my.cnf)
[root@db02 ~]# systemctl stop mysql.service
[root@db02 ~]# /etc/init.d/mysqld start

#验证
mysql> show variables like '%server_id%';

3.配置的生效顺序

#cmake
socket=/tmp/mysql.sock

#配置文件指定socket
[root@db02 ~]# vim /etc/my.cnf
[mysqld]
socket=/server/mysql/mysql.sock

#命令行配置
--socket=/opt/mysql.sock

#命令行指定文件
[root@db02 ~]# vim ~/1.txt
[mysqld]
socket=/mnt/mysql.sock

#测试优先级命令
[root@db02 ~]# mysqld_safe --defaults-file=~/1.txt --socket=/opt/mysql.sock

mysqld_safe   读取的是/etc/my.cnf
--defaults-file=~/1.txt   读取的是~/1.txt
--socket	指定的是 /opt/mysql.sock

4.优先级结论

#优先接结论:
1.命令行
2.defaults-file
3.配置文件
4.cmake

#最终总的配置优先级顺序:
命令行 >> defaults-file >> ~/.my.cnf >> $basedir/my.cnf >> /etc/mysql/my.cnf >> /etc/my.cnf >> cmake

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:mysql二进制指定目录安装数据库及MySQL配置【显哥出品,必为精品】
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到