1.打开自己的服务器,然后选择【我的电脑】,右键,选择【管理】
2.在【管理】界面下,找到【本地用户和组】,选择【用户】,然后在【用户】中找到【MYSQL】用户。
3.选择【MYSQL】用户,然后右键,选择【设置密码】,然后会弹出一个输入对话框,输入新密码和确认密码,然后【确定】
4.做完以上的之后,同样在【管理】界面下,找到【服务和应用程序】,然后选择【服务】,找到【MYSQL】服务选项。
5.在【MYSQL】服务选项中右键,选择【属性】,然后会弹出一个对话框。这时,选择【登陆】选项卡。然后把刚刚更改的密码输入进行然后确定就可以了。
6.最后,返回【服务】界面,在【MYSQL】服务选项中右键,选择【启动】。就可以了
(1) service mysqld stop //先停止mysql服务
(2)然后打开mysql配置文件/etc/my.cnf.在【mysqld】下面添加一行代码:skip-grant-tables。这行代码意思就是跳过跳过授权表,即是可以跳过密码验证直接进入数据库。
(3) service mysqld restart //重启mysql数据库。假如不重启的话,不会生效。
mysql -uroot -p //此时直接回车,既可以进入数据库。
出现mysql>就说明你已经进入到mysql数据库里了。
(4)进数据库后,use mysql //选择mysql这个库,因为mysql的root密码存放在这个数据库里。
show tables //查看下mysql库里有哪些表,我们需要操作的用户名密码都在user表里。
desc user //查看下user表有哪些字。
(5)更改root密码。
update user set password=password('123456') where user="root"; //用户选root,可以随便更改成任意密码,我这里设置的123456,password()是mysql密码加密的一个函数。
flush privileges; //刷新下密码,使更改的生效。
exit //退出数据库。
(6)退出数据库,重新登录
mysql -uroot -p //回车输入刚刚更改的密码,就能进去了。
然后再次进入配置文件vi /etc/my.cnf 把skip-grant-tables去掉。
(7)注意更改后一定记得到my.cnf里把skip-grant-tables去掉,不然下次重启mysql后,又变成不需要密码直接进去了。
Mysql数据库
类型:关系型数据库
持久化方式:
无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。
效率:
MySQL存放在硬盘,在速度上肯定没有Redis快,但是存放的数据量要多的多
功能与应用:
功能强大,传统的关系型数据库,应用非常广泛,基本可以满足所有存储数据的需求,满足所有应用程序等,例如论坛,个人博客,门户咨询等web网站以及OA等其他应用。
优势:
1. 它使用的核心线程是完全多线程,支持多处理器。
2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。
3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。
4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。
5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。
7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。
Redis数据库
类型:非关系型数据库
持久化方式:
redis所有数据都是放在内存中的,持久化是使用RDB方式或者aof方式
效率:
Redis的数据存放在内存,所以速度快但是会受到内存空间限制
功能与应用:
Redis是一个K-V数据库,同时还支持List/Hash/Set/Sorted Set等几个简单数据结构,它没有二维表的概念,不能做非常复杂的逻辑查询,所以只能以这些数据结构为基础实现功能,通常用来辅助关系型数据库(如mysql)使网站更快速。因此它只能满足一些特定应用场景。例如 :缓存,计数器,排行榜,活动促销,投票排序等
优势:
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value,并提供多种语言的API。
Redis 与其他 key - value 缓存产品有以下特点:
· Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
· Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
· Redis支持数据的备份,即master-slave模式的数据备份。
· 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
· 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
· 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
· 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
· Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
总结:
建站时,应首先选择关系型数据库(如mysql)做为基础数据库,如果想让网站更快速,再选择Redis来配合使用。一般Redis不单独作为建站需要,通常用来配合关系型数据库(mysql)来满足特定需求。
Redis与mysql数据同步:
读:读redis->如没有,读mysql->把mysql数据写回redis
写:写mysql->成功,写redis
操作方法:每个网站的数据库表前缀不同命名即可,比如dz的默认表前缀是pre_,wordpress的默认表前缀是wp_,如果有相同 程序在安装的时候注意一下表前缀就行了。
安全隐患:从技术上来说,可以实现,但是会给后期网站的维护,带来诸多麻烦。例如你这几个站中有一个站的客户空间不再放你这里了,需要你备份资料给他,默认一备份就会把其他几个站的数据库资料也备份进去了,数据库一旦有问题了,几个站同时受到影响。
问题描述:客户一不小心点了数据库的“一键清理”功能怎么办,数据库会不会删除。
问题解决:
只清理没有数据的数据库,不会清理有数据的数据库,可以重新创建。
针对win系统安装php环境以及数据库,快米云推荐简单的安装方法
推荐 PhpStudy2018 因为这个是非常方便-详细的不在介绍
下面介绍的是很久以前的phpmyadmin,这个是手动安装配置
1.从网络上下载phpMyAdmin的版,笔者是下载的phpMyAdmin For Windows V2.10.1 RCI版。
2.将phpMyAdmin-2.10.1rcl-all-languages-utf-8-only.zip解压到Web网站的根目录D:\wwwroot中去,并重命名文件夹为phpMyAdmin或其他。
3.打开phpMyAdmin目录,将config.sample.inc.php文件更名为config.inc.php。
4.用记事本打开config.incphp,找到“$efg["blowfish_secret"]”=一行,在引号内填入“cookie”,保存该文件,如图6-117所示。
5.在IE地址栏中输入“http://<服务器IP>/phpMyAdmin”或“http://127.0.0.1/phpMyAdmin”,单击【转到】按钮打开phpMyAdmin登录界面,输入数据库管理员的用户名root及其密码,单击【执行】按钮,如图6-118所示。
6.打开phpMyAdmin,在这里可以执行MYSQL的日常管理工作,如建立、复制、删除数据等,如图6-119所示。
首先我们登陆mysql,use到mysql,然后查询一下user表:
select * from user;
发现我们允许远程的方法是添加了一个host为%的记录。
确定了这个之后,我们就开始我们的配置了:
SET PASSWORD FOR 'root'@'%' = PASSWORD('newpasswdxinmima');
执行成功之后记得刷新一下:
flush privileges;
然后我们可以退出了,进行登陆试验。
0. 显示数据库
命令:show databases。
作用:列出当前数据库服务器中所有的数据库。
1. 切换数据库
命令: use database_name。
作用: 切换数据库。
2. 显示数据库中的所有表
命令: show tables。
作用: 显示数据库中的所有表。
3. 显示表中的所有列
命令:show full columns tables_name;
作用: 显示表中所有列信息。
4. 查看MySQL版本
命令:select version(); 。
作用:查看服务器版本。
5. 查看当前用户
命令:select current_user();
作用:显示当前登录用户
6. 显示单表信息
命令:show table status like table_name。
作用:显示表详细信息。
7. 显示进程数
命令: show processlist。
作用:显示正在操作数据库的进程数。
8. 显示索引
命令:show index from table_name;
作用:显示表中的所有索引。
9. 查看执行计划
命令:explain 查询语句。
作用:查看查询语句的执行情况,常用于SQL优化。
#1045 无法登录 MySQL 服务器 其实临时解决方法也有,解决后一定要回复即可
打开phpmyadmin,进行登录,出现以下问题,提示:#1045 无法登录 MySQL 服务器
或许出现以下错误情况:phpmyadmin:#1045 无法登录 MySQL 服务器。Access denied for user ‘root’@'localhost’ (using password: YES)
问题原因:这有可能是由于前面设置mysql密码没有成功,所以导致了我们使用设置的mysql root密码无法登陆服务器。
解决方法:这时可以尝试使用mysql 默认的root账号的空密码登陆数据库。
如果使用空密码登陆时又出现:空密码登录被禁止 (参见 允许空密码) 的错误。则要修改/phpmyadmin/libraries/config.default.php 文件,找到下面两行
$cfg['Servers'][$i]['nopassword'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
将两个false改为true,同时设置 $cfg['Servers'][$i]['password'] = '';通过这样设置配置文件后phpmyadmin 就会允许以空密码方式登录mysql数据库了。
若重新以空密码方式登录phpmyadmin有时仍无法登陆,请清除cookie或关闭原来的phpmyadmin 登录窗口,重新使用空密码登录。
若这时候仍然显示空密码登陆被禁止,试试随便输入几个字符当作密码看是否能够登陆成功。
登陆mysql服务器之后尽快将mysql密码在phpmyadmin中修改过来。或者在SSH客户端修改mysql密码:cd /usr/local/mysql/bin
然后执行命令:./mysqladmin -u root -p passwordhttp://laser-mall.com/passwd。
最后在mysql的user表中删除除root以外所有用户。
昨天在微信中公众号开发中使用$GLOBALS["HTTP_RAW_POST_DATA"]来获取微信公众平台推送过来的post数据,结果惊奇的发现微信号总是提示“该微信公众号暂时无法提供服务”,仔细去检查代码,也没错,可就是无法提供服务。今天又检查了一把,还是没有语法错误,于是乎,我将中间的所有数据全部写到的记事本里去,通过及时本发现$GLOBALS["HTTP_RAW_POST_DATA"]获取的数据是空的。经过资料查找,终于发现了解决的套路:
$GLOBALS ["HTTP_RAW_POST_DATA"]跟$_POST,file_get_contents('php://input') 差不多,用$GLOBALS ["HTTP_RAW_POST_DATA"]或file_get_contents('php://input')的情况大多是为了获取$_POST无法接收的数据类型(如XML数据)
在$GLOBALS ["HTTP_RAW_POST_DATA"]取不到值的情况下可以按以下方式排查:
1.用file_get_contents('php://input')获取数据。如果获取不到,则可能是数据传输错误,对请求进行捉包,分析数据。
2.如果file_get_contents('php://input')有数据。则查看php.ini配置文件。
找到如下,如果没开启则开启
always_populate_raw_post_data = On
注意:这种处理方式是在php版本较低的时候,在php-ini中才有的配置,当版本升级到7,或者更高的时候该机制就被废弃掉了。
微信接口$GLOBALS['HTTP_RAW_POST_DATA']接收不到值
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
打印$xml出来,结果是null
使用的是php7,原因是php7已移除这个全局变量,改成
$xml = file_get_contents("php://input");
即可