用户账号及权限管理
用户账号:'user'@'host'
user: 用户名
host: 此用户访问mysqld服务时允许通过哪些主机远程创建连接;
host类型:IP、网络地址、主机名、通配符(%和_);
禁止检查主机名:
MySQL在实现mysqld服务器端验证客户端身份时,它会尝试在每一次客户端创建链接时,反解客户端的IP地址为主机名,
并根据主机名检查其权限。所以尽管我们有时候对主机名做了授权,却无法访问,可能是我们对主机名做了授权,
但本机服务器却没法反解对方的IP地址到主机名,所以建议禁止检查主机名
my.cnf, [mysqld] //MySQL的配置文件配置
skip_name_resolve = yes
创建用户账号:
CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];
> create user 'nihao'@'%' identified by 'nihao@nihao';
> select user,host,password from user; //查看用户
# mysql -unihao -h192.168.108.160 -p //在192.168.108.169上面进行登陆160的MySQL
//此时这里只能看到测试数据库,因为并未对nihao该用户进行授权
删除用户:
DROP USER 'username'@'host';
> drop user 'nihao'@'%';
> select user,host,password from user; //就不再有了
授权:
权限级别:管理权限、数据库、表、字段、存储例程;
GRANT priv_type,... ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION];
> grant select,delete on testdb.* to 'testuser'@'%' identified by 'testpass';
# mysql -utestuser -h192.168.108.160 -p //可以在其他客户端登陆了
> revoke delete on testdb.* from 'testuser'@'%'; //用管理员身份回收testuser用户的权限
把哪个数据库上的哪些表的哪些权限授予给哪个用户
priv_type: ALL [PRIVILEGES] 授于权限
db_name.tb_name:
*.*: 所有库的所表和所有存储例程;
db_name.*: 指定库的所有表;
db_name.tb_name: 指定库的指定表;
db_name.routine_name:指定库的存储例程;
查看指定用户获得的授权:
SHOW GRANTS FOR 'user'@'host';
> show grants for 'root'@'localhost';
SHOW GRANTS FOR CURRENT_USER;
> show grants for current_user(); //查看当前用户的权限,()可要可不要
回收授权:
REVOKE priv_type, ... ON db_name.tb_name FROM 'user'@'host';
注意:MariaDB服务进程启动时会读取mysql库中的所有授权表至内存中;
(1) GRANT或REVOKE等执行权限操作会保存于表中,MariaDB的服务进程会自动重读授权表;
(2) 对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表:
mysql> FLUSH PRIVILEGES; //刷新授权,让mysqld守护进程重读和权限相关的表
LAMP组合的编译安装:
httpd+php 结合类型:
1、modules: 把php编译成httpd的DSO对象;
prefork: libphp5
event, worker: libphp5-zts
--enable-maintainer-zts //如果是prefork就不需要了
2、cgi
3、fpm(fastcgi):php作为独立的服务
httpd对fastcgi协议的支持:
httpd-2.2: 需要额外安装fcgi模块;
httpd-2.4: 自带fcgi模块;
安装次序:
httpd, MariaDB, php
1、首先安装httpd,之前已经写过安装步骤,不再赘述
https://www.cnblogs.com/hanshanxiaoheshang/p/9178402.html
这里注意是 --with-mpm=enent
2、安装mariadb
https://www.cnblogs.com/hanshanxiaoheshang/p/9193958.html
3、安装PHP-5.4.40 //下载页面http://mirrors.sohu.com/php/
# tar xf php-5.4.40.tar.gz
# cd php-5.4.40
编译安装php报错PHP configure: error: mcrypt.h not found. Please reinstall libmcrypt. 解决办法:http://www.21yunwei.com/archives/2511
编译安装php报错PHP configure: error: mcrypt.h not found. Please reinstall libmcrypt. 原因以及解决办法:
原因centos源不能安装libmcrypt-devel,由于版权的原因没有自带mcrypt的包。有
方法1:
1、安装第三方yum源
可以scp将阿里云的文件CentOS-Base.repo直接拷贝过来。
2、使用yum命令安装
yum install php-mcrypt libmcrypt libmcrypt-devel
方法2:
使用php mcrypt 前必须先安装Libmcrypt
libmcrypt源码安装方法:
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure –prefix=/usr/local
make
make install
再去编译安装就可以了。如有其他报错,请根据具体报错解决。
转载:21运维 » 编译安装php报错PHP configure: error: mcrypt.h not found. Please reinstall libmcrypt. 解决办法
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
#hash 可查看启动的程序
#
三、编译安装php-5.4.26 这里安装的5.4.40
1、解决依赖关系:
请配置好yum源(系统安装源及epel源)后执行如下命令:
# yum -y groupinstall "Desktop Platform Development"
# yum -y install bzip2-devel libmcrypt-devel libxml2-devel
2、编译安装php-5.4.26
首先下载源码包至本地目录,下载位置ftp://172.16.0.1/pub/Sources/new_lamp。
# tar xf php-5.4.26.tar.bz2
# cd php-5.4.26
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
说明:
1、这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
2、如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
# make
# make test
# make intall
为php提供配置文件:
# cp php.ini-production /etc/php.ini
3、 编辑apache配置文件httpd.conf,以apache支持php
# vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。
重启httpd时会出现错误,是pidfile的问题
#vim /etc/httpd24/httpd.conf
# ls /usr/local/apache/logs/ 在这个目录下
#vim /etc/rc.d/init.d/httpd24 //修改启动脚本
#killall httpd
#service httpd24 start
#service httpd24 restart
测试页面index.php示例如下:
<?php
$link = mysql_connect('127.0.0.1','root','mageedu');
if ($link)
echo "Success...";
else
echo "Failure...";
mysql_close();
?>
安装phpMyAdmin
#unzip phpMyAdmin-4.4.1.1-all-languages.zip
# mv phpMyAdmin-4.4.1.1-all-languages /usr/local/apache/htdocs/pma
#cd /usr/local/apache/htdocs/pma
# cp config.sample.inc.php config.inc.php
#vim config.inc.php //添加随机密码
在浏览器中输入:http://192.168.108.160/pma/index.php
# ab -c 10 -n 10 http://192.168.108.160/pma/index.php //进行压力测试
四、安装xcache,为php加速:
1、安装
下载页面:https://xcache.lighttpd.net/pub/Releases/3.2.0/
# tar xf xcache-3.0.3.tar.gz
# cd xcache-3.0.3
# /usr/local/php/bin/phpize
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
--enable-xcache //启用xcache模块
--with-php-config=/usr/local/php/bin/php-config //把xcache编译成php的模块,一般称为扩展
# make && make install
安装结束时,会出现类似如下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
2、编辑php.ini,整合php和xcache:
首先将xcache提供的样例配置导入php.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d
说明:xcache.ini文件在xcache的源码目录中。
接下来编辑/etc/php.d/xcache.ini,找到zend_extension开头的行,修改为如下行:
zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。
# ab -c 10 -n 10 http://192.168.108.160/pma/index.php //进行压力测试,有xcache就会非常明显
# ab -c 100 -n 1000 http://192.168.108.160/pma/index.php
五、启用服务器状态
mod_status模块可以让管理员查看服务器的执行状态,它通过一个HTML页面展示了当前服务器的统计数据。这些数据通常包括但不限于:
(1) 处于工作状态的worker进程数;
(2) 空闲状态的worker进程数;
(3) 每个worker的状态,包括此worker已经响应的请求数,及由此worker发送的内容的字节数;
(4) 当前服务器总共发送的字节数;
(5) 服务器自上次启动或重启以来至当前的时长;
(6) 平均每秒钟响应的请求数、平均每秒钟发送的字节数、平均每个请求所请求内容的字节数;
启用状态页面的方法很简单,只需要在主配置文件中添加如下内容即可:
<Location /server-status>
SetHandler server-status
Require all granted
</Location>
需要提醒的是,这里的状态信息不应该被所有人随意访问,因此,应该限制仅允许某些特定地址的客户端查看。比如使用Require ip 172.16.0.0/16来限制仅允许指定网段的主机查看此页面。
ab测试示例:未启用xcache和启用xcache后,对phpMyAdmin的主而面进行请求测试的结果如下所示:
测试环境:
主机CPU:Core 2 Duo i3-3210
内存大小:734MB
Requests per second: 36.38 [#/sec] (mean)
Time per request: 274.871 [ms] (mean)
Time per request: 27.487 [ms] (mean, across all concurrent requests)
Requests per second: 144.23 [#/sec] (mean)
Time per request: 69.332 [ms] (mean)
Time per request: 6.933 [ms] (mean, across all concurrent requests)
可参考https://blog.csdn.net/reblue520/article/details/50405148
第二部分、配置apache-2.4.9以fpm方式的php-5.4.26
一、apache、MySQL的安装与前一部分相同;请根据其进行安装;
二、编译安装php-5.4.26
1、解决依赖关系:
请配置好yum源(可以是本地系统光盘)后执行如下命令:
# yum -y groupinstall "X Software Development"
如果想让编译的php支持mcrypt扩展,此处还需要下载ftp://172.16.0.1/pub/Sources/ngnix目录中的如下两个rpm包并安装之:
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-0.9.9-1.el5.centos.i386.rpm
mhash-devel-0.9.9-1.el5.centos.i386.rpm
2、编译安装php-5.4.26
首先下载源码包至本地目录,下载位置ftp://172.16.0.1/pub/Sources/new_lamp。
# tar xf php-5.4.26.tar.bz2
# cd php-5.4.26
# ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
修改后:
# ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc/php5/ --with-config-file-scan-dir=/etc/php5.d --with-bz2
说明:如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
# make -j 4 && make intall //开四个线程
为php提供配置文件:
# cp php.ini-production /etc/php.ini
3、配置php-fpm
为php-fpm提供SysV init脚本,并将其添加至服务列表:
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on
为php-fpm提供配置文件:
# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf
编辑php-fpm的配置文件:
# vim /usr/local/php5/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
#/usr/local/php5/etc/php-fpm.conf
pid = /usr/local/php5/var/run/php-fpm.pid
接下来就可以启动php-fpm了:
# service php-fpm start
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
# ps aux | grep php-fpm
默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字。
# netstat -tnlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm
三、配置httpd-2.4.9
1、启用httpd的相关模块
在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2、配置虚拟主机支持使用fcgi
在相应的虚拟主机中添加类似如下两行。
ProxyRequests Off
ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
在相应的虚拟主机中以反向代理的方式告诉用户,所有对以.php格式结尾的URL请求,
都基于fcgi这个协议送给(127.0.0.1)这个服务器上的9000端口,
^/(.*.php)$:以任何内容开始,以.php格式结尾的所有内容
/PATH/TO/DOCUMENT_ROOT:表示PHP网页文件的存放位置
$1:表示^/(.*.php)$这个模式中所匹配到的页面资源路径,这是做表达式的后向引用的
http://www.magedu.com/admin/index.php
/web/host1/admin/index.php
fcgi://127.0.0.1:9000/web/hosts/admin/index.php
例如:
<VirtualHost *:80>
DocumentRoot "/www/magedu.com"
ServerName magedu.com
ServerAlias www.magedu.com
ProxyRequests Off
ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/www/magedu.com/$1
<Directory "/www/magedu.com">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
ProxyRequests Off:关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
3、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页
# vim /etc/httpd/httpd.conf
1、启用两行
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
3、定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
补充:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。
4、这里不使用虚拟主机,而使用中心主机,因此加上:把php页面的请求都转发给fpm服务器
ProxyRequests Off 关闭正向代理
ProxyPassMatch ^/(.*.php)$ fcgi://192.168.108.160:9000/usr /local/apache/htdocs$1
注:如果重启httpd时出现这种情况,就在:
#vim /etc/httpd24/httpd.conf
ServerName www.example.com:80 //去掉前面的注释符号#
CentOS 7上实现LAMP:
解决依赖关系:
yum -y install @"Development Tools" libxml2-devel mariadb-devel bzip2-devel
总结:LAMP
httpd
mariab, mysql
php
LNMMP