MySQL 的二进制安装
1:基础环境准备
[root@www ~]# yum -y install gcc vim wget net-tools lrzsz libaio
备注:
libaio是linux版本的aio库,aio指的是异步io
2:创建运行用户
[root@www ~]# useradd -M -s /sbin/nologin mysql
3:关闭防火墙
[root@www ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@www ~]# setenforce 0
[root@www ~]# systemctl disable firewalld
[root@www ~]# systemctl stop firewalld
4:二进制安装
[root@www ~]# tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@www ~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql
[root@www ~]# mkdir /usr/local/mysql/data
[root@www ~]# chown -R mysql.mysql /usr/local/mysql/data
[root@www ~]# cd /usr/local/mysql/bin
[root@www ~]# ./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
5:设定配置文件
[root@www ~]# vim /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock
[mysqld]
socket=/usr/local/mysql/data/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
port = 3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=2048
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
#pid-file=/var/run/mariadb/mariadb.pid
备注:
skip-name-resolve :跳过名称解析
所谓反向解析是这样的:
mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysql.user里的权限记录(某些是用hostname定义的)。
如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待。
添加skip-name-resolve以后就跳过着一个过程了
[root@www ~]# echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile
[root@www ~]# . /etc/profile
6:配置 systemctl 方式启动
[root@www ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@www ~]# chmod +x /etc/rc.d/init.d/mysqld
[root@www ~]# vim /lib/systemd/system/mysqld.service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/mysqld start
ExecReload=/etc/rc.d/init.d/mysqld restart
ExecStop=/etc/rc.d/init.d/mysqld stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
备注:
种类 | 解释 |
Type=oneshot | 这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 |
Type=notify | 与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 |
Type=dbus | 若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。 |
Type=idle | systemd会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。 |
Type=forking | systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程 |
Type=simple | systemd认为该服务将立即启动。服务进程不会 fork 。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket 激活型。 |
备注:
在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。
当一个进程调用fork()函数后,系统先给新的进程分配资源,然后把原来的进程的所有值都复制到新的新进程中。这样就把新的进程创建了出来, 在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。当子进程创建好后,这个父进程就退出,也代表该服务创建成功。
[root@www ~]# systemctl daemon-reload
[root@www ~]# systemctl enable mysqld
[root@www ~]# systemctl start mysqld
[root@www~]# netstat -tunlp|grep 3306
7:访问 MySQL 数据库
[root@www ~]# mysql -u root -p
mysql>set password =password('pwd123');