LAMP是 linux Apache MySQL PHP的简写,即把Apache MySQL PHP 安装在linux系统上,组成一个环境来运行PHP网站。这里的Apache是httpd服务。这些可以安装在一个机器上,也可以安装在多台机器上,但是httpd和PHP安装在一台机器上(php作为httpd的一个模块存在的。 他们两者必须要在一起,才能实现效果)。
静态,就是直接由webserver处理的请求,比如图片,js,css等,而动态的是需要和数据库打交道的请求,比如你现在访问ask.apelearn.com,登录用户,发帖子,看帖子,这些都是需要和数据库打交道的。这样的就是动态。
安装MySQL步骤:
安装时在那个目录下操作很重要,决定着你能否安装成功。
下载MySQL到指定目录下(/usr/local/src).
[root@shuai-01 ~]# cd /usr/local/src/
[root@shuai-01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
解压包:
[root@shuai-01 local]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
将解压的包移动并重命名为/usr/local/mysql
[root@shuai-01 local]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
[root@shuai-01 mysql]# ls
bin data include man mysql-test scripts sql-bench
COPYING docs lib my.cnf README share support-files
创建MySQL用户,创建/data/目录:
[root@shuai-01 local]# useradd mysql
[root@shuai-01 local]# mkdir /data/
安装MySQL,指定用户,指定目录:
[root@shuai-01 local]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
这时如果出现错误,如下图:
少了一个模块,模块名字dumper,少什么安装什么。
搜索模块包名:
[root@shuai-01 ~]yum list |grep perl |grep -i dumper
perl-Data-Dumper.x86_64 2.145-3.el7 @base
perl-XML-Dumper.noarch 0.81-17.el7 @base
perl-Data-Dumper-Concise.noarch 2.020-6.el7 epel
perl-Data-Dumper-Names.noarch 0.03-17.el7 epel
搜出来四个,安装完一个包后再安装MySQL,还出错,安装下一个包,四个都安装完肯定能安装MySQL。其实它是靠perl-Data-Dumper.x86_64这个包。
安装这个包:
[root@shuai-01 ~]# yum install -y perl-Data-Dumper
错误2:./scripts/mysql_install_db –user=mysql –datadir=/data/mysql
Installing MySQL system tables…./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
yum -y install libaio-devel
安装完成后就能安装MySQL了。
[root@shuai-01 ~]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
安装完成后,检验是否安装成功,没有错误。
安装MySQL后,立马执行echo $? 显示是0,就表示安装成功,没有问题。
[root@shuai-01 ~]# echo $?
其实,echo $? 是检测上一条命令是否执行成功
拷贝配置文件(/support-files/my-large.cnf):
[root@shuai-01 mysql]# cp support-files/my-large.cnf /etc/my.cnf
mysql的配置文件就叫/etc/my.cnf 就在/etc下。
也可能你的/etc/my.cnf这个文件本来就有了,被其他的包装的时候带过来了。
查看是哪个包安装的/etc/my.cnf
[root@shuai-01 mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.52-1.el7.x86_64
这个也可以使用,不过要改一下文件。
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d
复制启动脚本并修改属性:
[root@shuai-01 mysql]# support-files/mysql.server /etc/init.d/mysqld
修改启动脚本:
basedir=/usr/local/mysql
datadir=/data/mysql
# If you change base dir, you must also change datadir. These may get
# overwritten by settings in the MySQL configuration files.
basedir=/usr/local/mysql
datadir=/data/mysql
# Default value, in seconds, afterwhich the script should timeout waiting
# for server start.
修改启动脚本文件权限:
[root@shuai-01 mysql]# chmod 755 /etc/init.d/mysqld
设置开机启动:
[root@shuai-01 ~]# chkconfig --add mysqld
也可以手动启动:
[root@shuai-01 ~]# service mysqld start
启动起来了:
[root@shuai-01 mysql]# ps aux |grep mysql
root 1535 0.0 0.1 115392 1688 ? S 19:07 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/shuai-01.pid
mysql 1863 0.1 45.2 1300784 452380 ? Sl 19:07 0:08 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/shuai-01.err --pid-file=/data/mysql/shuai-01.pid --socket=/tmp/mysql.sock
root 3473 0.0 0.0 112680 976 pts/0 S+ 21:00 0:00 grep --color=auto mysql
监听端口(3306):
[root@shuai-01 mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1516/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2168/master
tcp6 0 0 :::3306 :::* LISTEN 1863/mysqld
tcp6 0 0 :::22 :::* LISTEN 1516/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2168/master
如果没有启动脚本,可以用命令行启动:
命令行,指定配置文件路径,指定用户,指定/datadir 加&丢入后台。
[root@shuai-01 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
[2] 3723
[root@shuai-01 mysql]# 171214 21:10:07 mysqld_safe Logging to '/data/mysql/shuai-01.err'.
171214 21:10:07 mysqld_safe Starting mysqld daemon with databases from /data/mysql
[root@shuai-01 mysql]# !ps
ps aux |grep mysql
root 3545 0.0 0.1 113264 1612 pts/0 T 21:08 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql 3670 11.1 0.0 0 0 pts/0 Z 21:08 0:20 [mysqld]
root 3723 0.0 0.1 113264 1612 pts/0 S 21:10 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql 3848 1.6 45.1 1300788 451364 pts/0 Sl 21:10 0:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/shuai-01.err --pid-file=/data/mysql/shuai-01.pid --socket=/tmpmysql.sock
root 3872 0.0 0.0 112676 976 pts/0 R+ 21:11 0:00 grep --color=auto mysql
关闭时就只能killall:
[root@shuai-01 mysql]# killall mysqld
killall会先停止读写操作,把已有的写完后,就杀死MySQL服务。
而kill -9 pid 会啥都不管,直接杀掉进程。这样做很可能导致数据的丢失甚至损坏表
MySQL有两个引擎:innodb (小), myisam(大)