phpmysql56
如果不是root密码:
连root的密码也忘记了吗?
没有的话,用root进去,修改mysql数据库user表咯。
如果是root密码:
方法一:
MySQL提供跳过访问控制的命令行参数,通过在命令行以此命令启动MySQL服务器:
safe_mysqld --skip-grant-tables&
即可跳过MySQL的访问控制,任何人都可以在控制台以管理员的身份进入MySQL数据库。
需要注意的是在修改完密码以后要把MySQL服务器停掉重新启动才会生效
方法二:
可以进行如下的步骤重新设置MySQL的root密码:
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。
因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的
状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对
外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全
状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
2.修改MySQL的登录设置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
skip-grant-tables
保存并且退出vi。
3.重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
4.登录并修改MySQL的root密码
# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’ ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5.将MySQL的登录设置修改回来
# vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
windows
1.以系统管理员身份登陆系统。
2.打开cmd—–net start 查看mysql是否启动。启动的话就停止net stop mysql.
3.我的mysql安装在d:\usr\local\mysql4\bin下。
4.跳过权限检查启动mysql.
d:\usr\local\mysql4\bin\mysqld-nt –skip-grant-tables
5.重新打开cmd。进到d:\usr\local\mysql4\bin下:
d:\usr\local\mysql4\bin\mysqladmin -uroot flush-privileges password “newpassword”
d:\usr\local\mysql4\bin\mysqladmin -u root -p shutdown 这句提示你重新输密码。
6.在cmd里net start mysql
7.搞定了。
2,MySQL4.1以上版本一种密码错误问题的解决方法
1 # SET PASSWORD FOR ’some_user’@’some_host’ = OLD_PASSWORD(‘newpwd’);
2 # FLUSH PRIVILEGES;
3,Mysql数据库修复
myisamchk -r -q d:\mysql\data\latin1\*
r代表修复
q代表快速
d:\mysql\data\latin1\*数据库里面 *代表里面的所有的文件
方法三:
如果你忘记了你的MYSQL的root口令的话,你可以通过下面的过程恢复。
1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。
kill `cat /mysql-data-directory/hostname.pid`
你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。
2. 使用`--skip-grant-tables' 参数来启动 mysqld。
3. 使用`mysql -h hostname mysql'命令登录到mysqld server ,用grant命令改变口令。你也可以这样做:`mysqladmin -h hostname -u user password 'new password''。
(其实也可以用use mysql; update user set password =password('yourpass') where user='root' 来做到。)
4. 载入权限表: `mysqladmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH PRIVILEGES'。(当然,在这里,你也可以重启mysqld。)
方法四:(一定要先备份)
1,重新在另一台电脑上安装相同版本的MySQL
2,删除忘记密码的电脑中MySQL安装目录中\data\mysql的全部内容(要先停止MySQL服务)
3,Copy新装的电脑上MySQL安装目录中\data\mysql的全部内容 to 刚刚删除的目录中
4,启动MySQL服务
这样就只有一个root用户了,密码为空……
Ⅱ PHP+MYSQL同时插入多条记录的方法 表 ID 自动递增 name TEXT 需要一次添加多行数据。
最简单的方法,LZ可以在提交NAME时每一行后用,区分,类似这种
张三,
李四,
王二麻子
然后提交到PHP文件,$_POST['name']
再用$arr=explode(",",$_POST['name'])截取放入数组,
加个for($i=0;$i<3;$i++){
INSERT ...VALUES('$arr[$i]')...
}
这样应该OK的,
Ⅲ 求windows下PHP+apache+mysql+zend的完整配置
首先配置环境
第一步:下载安装的文件
1. MySQL:版本 mysql-5.1.56-win32.msi;
2. Apache: 版本httpd-2.2.17-win32-x86-no_ssl.msi;
3. PHP5.3.5 版本php-5.3.5-Win32-VC6-x86.Zip
4. phpMyadmin 版本phpMyAdmin-3.4.0-beta3-all-languages.7z
5. PHP脚本集成开发环境zendstudio8.0
注意:一定要下载php-5.3.5-Win32-VC6-x86版本的,不要下载php-5.3.5-nts-Win32-VC6-x86版本,更不要下载VC9版本的,因为VC9是专门为IIS定制的,VC6 是为了其他WEB服务软件提供的,如 Apache。Apache服务器又有openssl和no_ssl之分,openssl表示带有openssl模块,利用openssl可给Apache配置SSL安全链接。
第二步:安装文件
1. 在要安装的磁盘建一个文件夹(笔者的做法是在D盘的根目录下创建一个php文件夹D:php)。
2. 安装Apache服务器,安装完成后的目录结果是:D:phpApache。(就是把Apache服务器安装在D:phpApache文件夹里,这个安装目录是可以自定义的,是Apache的安装目录。)
3. 把下载的php-5.3.5-Win32-VC6-x86解压的D:php目录中,可以把文件夹的名字改短,结果D:phpphp5
4. 安装MySql数据库,它的安装和一般情况一样。笔者把他安装在(D:phpMySQL)和php同目录。
第三步:配置PHP5.3.5
1. 配置PHP5.3.5,打开php安装目录(笔者是D:phpphp5)可以看到目录下有两个这样的文件php.ini- development和php.ini-proction,第一个是开发使用的配置文件,第二个是标准的生产环境的配置,选择前者借即可。
2. 选择php.ini-development复制一份到同目录下,并改名为php.ini使用文本工具打开。
查找
; On windows:
; extension_dir ="ext"
可以看到两个; extension_dir ="ext",选择On windows:下面的那个并去掉前面的分号;,修改为
; On windows:
extension_dir ="d:/php/php5/ext"
表示指定PHP扩展包的具体目录,以便调用相应的DLL文件。
注释:网络上有一些配置教程要求把php.ini复制到系统盘的windows文件夹下,笔者经过Windows7下的测试,没有必要,如果读者仍有疑虑,也可将php,ini放在windows文件夹下,呵呵。
3.php默认许多功能和扩展是关闭的,默认PHP并不支持自动连接Mysql,需开启相应的扩展库功能。查找
;extension=php_curl.dll
;extension=php_gd2.dll
;extension=php_mbstring.dll
;extension=php_mysql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_odbc.dll
;extension=php_xmlrpc.dll
把extension前面的分号去掉。
注释:网络上有些配置的教程是把php/ext内的这几个DLL文件拷贝到系统盘的system32文件夹下,原理都是一样的,这里是在php.ini文件中开启扩展程序,PHP5能够通过php.ini配置文件的配置自动识别DLL程序扩展,不用多此一举。
查找short_open_tag = Off把它修改成short_open_tag = On,让其支持短标签。
注释:如果希望加载其他模块,方法相同,去掉前面的分号。关于PHP的扩展库问题,我们待会还要讨论。
在更新配置时,最好备份php.ini文件,避免不必要的麻烦。
4.配置PHP的Session功能
(对于PHPer新手来说,这一步,以及开启文件上传扩展,调整时差问题,一开始可能不太常用,在以后的PHP学习中,在学到Session功能的应用时,相关资料上会有如何配置的介绍,以后霡霂也会更新和PHP配置高级应用的文章。)
在使用session功能时,我们必须配置session文件在服务器上的保存目录,否则无法使用session,我们需要在Windows 7上新建一个可读写的目录文件夹,此目录最好独立于WEB主程序目录之外,此处我在D盘根目录上建立了phpsessiontmp目录(这个是一定要建的,要不然在启动phpMyAdmin的时候就会报sesison启动不了的错误),然后在php.ini配置文件中找到
;session.save_path ="/tmp"
改为
session.save_path ="D:/phpsessiontmp"
这一步的配置对于phpadmin的配置是很重要的,phpadmin的设置有一个使用cookie登录,如果没有设置就会出错。大家可以试试。
对于初级的PHPer来说,建立session文件夹只是为了理解session的使用,就是保存网站浏览者和用户的登录信息,但是对于大型的网站,由于浏览量和用户的数目庞大,要从众多的用户session中检索出某位用户的信息就变得让人难以忍受了,这时候就会使用数据库保存和读取session了,在session和数据库的知识里,大家就能学习到相关内容,在这只是为了大家能够看的明白。
5. 复制php5ts.dll文件到WINDOWS/system32目录下。这是PHP5配置中简单而重要的一步,通过php5ts.dl系统就能都识别PHP5的脚本执行程序,并能够正确的解释执行PHP脚本。
注释:只有php-5.3.5-Win32-VC6-x86版本中才有php5ts.dll ,
php-5.3.5-nts-Win32-VC9-x86版本是没有的。
第四步:配置Apache
1. 打开Apache目录下conf目录中的httpd.conf文件,查找#LoadMole,在其末尾处大概是128行的地方(提示,如果读者找不到128在什么位置,也没什么关系,确切的位置是#LoadMole vhost_alias_mole moles/mod_vhost_alias.so下,也可以下载一个Notepad++,作为文本编辑软件,也可以用来编辑PHP脚本)
添加:
LoadMole php5_mole"D:/php/php5/php5apache2_2.dll"
PHPIniDir"D:/php/php5"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
目录结构根据用户自己目录配置,在更改配置时最好先备份原文件。
2. 修改具体的index文件先后顺序,由于配置了PHP功能,当然需要index.php优先执行
查找DirectoryIndex index.html 将其修改成
DirectoryIndex index.php default.php index.html index.htm default.html default.htm
配置这里是指在打开页面默认直接打开的页面,就好像我们登陆网站的主页,一般打开的都是名为index.php或者index.html的页面。
3. 我们知道Apache默认服务器执行WEB主程序的目录为Apache2.2/htdocs ,所以当你的WEB主程序目录变更时,我们需要修改相应的Apache配置,查找DocumentRoot将其修改为指向你需要放置web文件的文件夹上(笔者在D:/php目录中创建了一个www文件夹)所以DocumentRoot就是DocumentRoot"D:/php/www",读者可以根据自己配置来修改。
在安装Mysql时,也会出现提示,让读者选择数据库文件的存放位置,为了防止开发网站程序后期,上传网站程序时(一般自己建站都是租用虚拟主机)出现不必要的麻烦,建议把数据库表文件放在与PHP网页源码同一级的文件夹中,例如D:/php/SQldata。
4. 查找<Directory将其修改为你自己配置的DocumentRooot的路径(笔者是<Directory"D:/php/www">)
第五步:测试php+Apache+MySql是否配置成功
1. 打开MySql在MySql中创建一个新数据库和表。(笔者是userInfo数据库和users表就有id和name两个字段)
测试吗?简单就好,呵呵!!
2. 在上面创建的www文件夹中创建一个index.php文件使用EditPlus(又一个文本编辑器)或者其他文本工具打开。
3. 写入:代码如下:
<?
$DB_HOST ="localhost";
$DB_USER ="root";
$DB_PASS ="root";
$DB_NAME ="userInfo";
mysql_connect($DB_HOST,$DB_USER,$DB_PASS);
mysql_select_db($DB_NAME);
mysql_query("set NAMES gb2312");
$sql ="Select * From users";
$result = mysql_query($sql);
while($data=mysql_fetch_array($result)){
echo"------------------------";
echo $data['id']."<br/>";
echo $data['name']."<br/>";
}
mysql_close();
?>
说明 set NAMES gb2312 这个和mysql的数据库编码一致,如果server的编码是utf8,那这个也要用utf8的。
注释:关于测试的代码还有很多,但是都大同小异……
笔者在这里再介绍两个源码,分别这是PHP配置和Mysql数据库是否关联成功
源码1:PHP5配置相关信息
<?php
phpinfo();
?>
源码2:Mysql数据库是否关联成功
<?php
$link=mysql_connect("127.0.0.1","root","pwd");
//root为默认数据库用户名,pwd是你设置的数据库密码,如果使用127.0.0.1
//无法登录Mysql,打开C:WindowsSystem32driversetc下的hosts文件,
//查看 将 # 127.0.0.1 localhost的#号去掉。
if($link!=false)
{
echo"成功连接mysql服务器";
}
else
{
echo"与本地Mysql服务器连接失败";
}
mysql_close();
?>
4.启动Apache服务器,在浏览器输入http://localhost/回车。
如果进入相关页面,可以看到PHP的配置信息Mysql链接成功的页面:表示我们大功告成了!祝贺祝贺!
注释:PHP对中文支持不好,文件名和文件夹名最好用字母或英文。
第六步配置phpMyadmin
Phpadmin是使用PHP脚本编写的Mysql数据库图形化管理软件,应用简单普遍。
phpMyAdmin 默认下载后,需要进行安装配置后,才可以正常使用。安装配置phpMyAdmin软件,只要把握几个要点,进行起来就很简单了。下面,就是我常用的配置方法。
前提条件:
网站根目录:D:wwwhost
PHP根目录:D:wwwphp5
MySQL根目录:D:wwwmysql
phpMyAdmin根目录:D:wwwhostphpmyadmin
1. 首先解压phpMyAdmin-3.4.0-beta3-all-languages.7z,然后重命名为phpmyadmin,将其复制到php脚本的WEB主程序目录下,我复制到D:www目录下。
2. 从“D:wwwhostphpmyadminlibraries”目录下找到“config.default.php”。
使用zendstudio8.0打开(如果你安装了这个PHP安装环境的话,zendstudio8.0是大家公认的最好的PHP脚本的集成开发工具),查找以下信息,并做出相应更改。
$cfg['PmaAbsoluteUri'] = '';改为$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/';
说明:定义PHPMYADMIN位置,一般来说应该是(http://localhost/phpmyadmin/)本地测试填写:localhost,phpadmin就是phpMyadmin在php的主目录下的文件夹名字;
服务器测试填写:ip or domain,即你的网站的域名。
$cfg['Servers'][$i]['host'] = '';改为$cfg['Servers'][$i]['host'] = 'localhost';
(说明:默认无需修改)
$cfg['Servers'][$i]['user'] = '';改为$cfg['Servers'][$i]['user'] = 'root';
说明:默认网站数据库用户名
$cfg['Servers'][$i]['password'] = '';
改为$cfg['Servers'][$i]['password'] = '****';
说明:输入你数据库的密码
$cfg['blowfish_secret'] = '';改为$cfg['blowfish_secret'] = 'cookie';
说明:本地无需设置,网络需设成cookie
$cfg['Servers'][$i]['auth_type'] = 'config';改为$cfg['Servers'][$i]['auth_type'] = 'cookie';
说明:网络须启用cookie来防止恶意注入
$cfg['blowfish_secret'] = '';改为$cfg['blowfish_secret'] = 'cookie';
3.网络上相关教程,大多会让大家把从“D:wwwhostphpmyadminlibraries”下拷贝一份“config.default.php”到“D:wwwhostphpmyadmin”下,重命名为“config.inc.php”,那些事phpMyadmin3以前的的版本的配置方法,在phpMyadmin3发布以后,就不需要这样做了,只要修改libraries/config.default.php配置文件的配置项即可。这是因为phpmyadmin现在的版本默认首先加载libraries/config.default.php配置文件的内容,如果有config.inc.php,就会在config.inc.php配置文件中找到相同的变量并覆盖,所以如果没有特别的设定,你不需要再去创建一个config.inc.php,只要在libraries/config.default.php进行相关的配置即可。
4.关于短语密码的问题。现在phpMyadmin版本可以不用设置短语密码了。
测试为:
在浏览器上输入:http://localhost/phpmyadmin/index.php, 出现 登录界面,输入mysql的用户名和密码,就可以进去了。
配置Zend Framework环境
比如你的httpd.conf的配置如下:
<virtualHost *:80>
ServerName www.example.com
DocumentRoot "C:/example"
<Directory "C:/example">
AllowOverride all
Order Deny, Allow
</Directory>
</virtualHost>
关键的是需要在example的根目录下面添加一个目录:
.htaccess,这个是用来进行处理所有到该目录下面的请求:
SetEnv DEBUG_ENV TRUE
RewriteEngine On
RewriteCond &{REQUEST_FILENAME} -s [0R]
RewriteCond &{REQUEST_FILENAME} -l [0R]
RewriteCond &{REQUEST_FILENAME} -d
RewriteCond ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
这样在index.php中配置需要的环境,比如:
<?php
// 定义应用程序当前是否为调试模式
defined('DEBUG')
|| define('DEBUG', (getenv('DEBUG_ENV') == 'TRUE' ? true : false));
// 定义应用程序根目录
defined('PROJECT_PATH')
|| define('PROJECT_PATH', dirname(dirname(dirname(__FILE__))));
// 定义系统配置文件路径
defined('APPLICATION_CONFIG_INI')
|| define('APPLICATION_CONFIG_INI', PROJECT_PATH . '/applications/example/config/application.ini');
// 重新定义PHP默认搜索目录
set_include_path(implode(PATH_SEPARATOR, array(
PROJECT_PATH . '/library',
PROJECT_PATH . '/models',
get_include_path()
)));
// echo get_include_path();exit;
// 调试模式时开启错误输出
if (DEBUG) {
error_reporting(E_ALL);
ini_set('display_errors', true);
} else {
error_reporting(8191);
}
// 设置时区
date_default_timezone_set('Asia/Shanghai');
// 启动Light类库自动载入功能
require_once 'Light/Loader.php';
Light_Loader::autoLoad();
// 载入配置文件
//require_once 'Hexin/Config/Ini.php';
$appcfg = new Hexin_Config_Ini(APPLICATION_CONFIG_INI, !DEBUG);
require_once 'Zend/Registry.php';
Zend_Registry::set('appcfg', $appcfg->read());
// 记录整个响应所消耗的时间
$clock = Light_Debug_Clock::getInstance();
ob_start();
// 路由分发请求
$frontController = Light_Controller_Front::getInstance()
->enableAutoRender()
->setMolePath(PROJECT_PATH . '/applications')
->setRouter(new Light_Router_Rewrite())
->registerPlugin(new example_Controller_Plugin_Auth())
->dispatch();
// 输出整个响应所消耗的时间(Head头方式)
$clock->storage('Dispatch');
ob_end_flush();
Ⅳ mongodb 请问php中的这句mysql语法,在mongodb中如何写。
查询:
MySQL:
SELECT * FROM user
Mongo:
db.user.find()
MySQL:
SELECT * FROM user WHERE name = 'starlee'
Mongo:
db.user.find({‘name' : 'starlee'})
插入:
MySQL:
INSERT INOT user (`name`, `age`) values ('starlee',25)
Mongo:
db.user.insert({‘name' : 'starlee', ‘age' : 25})
如果你想在MySQL里添加一个字段,你必须:
ALTER TABLE user….
但在MongoDB里你只需要:
db.user.insert({‘name' : 'starlee', ‘age' : 25, ‘email' : '[email protected]'})
删除:
MySQL:
DELETE * FROM user
Mongo:
db.user.remove({})
MySQL:
DELETE FROM user WHERE age < 30
Mongo:
db.user.remove({‘age' : {$lt : 30}})
$gt : > ; $gte : >= ; $lt : < ; $lte : <= ; $ne : !=
更新:
MySQL:
UPDATE user SET `age` = 36 WHERE `name` = 'starlee'
Mongo:
db.user.update({‘name' : 'starlee'}, {$set : {‘age' : 36}})
MySQL:
UPDATE user SET `age` = `age` + 3 WHERE `name` = 'starlee'
Mongo:
db.user.update({‘name' : 'starlee'}, {$inc : {‘age' : 3}})
MySQL:
SELECT COUNT(*) FROM user WHERE `name` = 'starlee'
Mongo:
db.user.find({‘name' : 'starlee'}).count()
MySQL:
SELECT * FROM user limit 10,20
Mongo:
db.user.find().skip(10).limit(20)
MySQL:
SELECT * FROM user WHERE `age` IN (25, 35,45)
Mongo:
db.user.find({‘age' : {$in : [25, 35, 45]}})
MySQL:
SELECT * FROM user ORDER BY age DESC
Mongo:
db.user.find().sort({‘age' : -1})
MySQL:
SELECT DISTINCT(name) FROM user WHERE age > 20
Mongo:
db.user.distinct(‘name', {‘age': {$lt : 20}})
MySQL:
SELECT name, sum(marks) FROM user GROUP BY name
Mongo:
db.user.group({
key : {‘name' : true},
cond: {‘name' : ‘foo'},
rece: function(obj,prev) { prev.msum += obj.marks; },
initial: {msum : 0}
});
MySQL:
SELECT name FROM user WHERE age < 20
Mongo:
db.user.find(‘this.age < 20′, {name : 1})
发现很多人在搜MongoDB循环插入数据,下面把MongoDB循环插入数据的方法添加在下面:
for(var i=0;i<100;i++)db.test.insert({uid:i,uname:'nosqlfan'+i});
上面一次性插入一百条数据,大概结构如下:
{ “_id” : ObjectId(“4c876e519e86023a30dde6b8″), “uid” : 55, “uname” : “nosqlfan55″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6b9″), “uid” : 56, “uname” : “nosqlfan56″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6ba”), “uid” : 57, “uname” : “nosqlfan57″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bb”), “uid” : 58, “uname” : “nosqlfan58″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bc”), “uid” : 59, “uname” : “nosqlfan59″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bd”), “uid” : 60, “uname” : “nosqlfan60″ }
简易对照表
SQL Statement Mongo Query Language Statement
CREATE TABLE USERS (a Number, b Number) implicit; can be done explicitly
INSERT INTO USERS VALUES(1,1) db.users.insert({a:1,b:1})
SELECT a,b FROM users db.users.find({}, {a:1,b:1})
SELECT * FROM users db.users.find()
SELECT * FROM users WHERE age=33 db.users.find({age:33})
SELECT a,b FROM users WHERE age=33 db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BY name db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33 db.users.find({'age':{$gt:33}})})
SELECT * FROM users WHERE age<33 db.users.find({'age':{$lt:33}})})
SELECT * FROM users WHERE name LIKE "%Joe%" db.users.find({name:/Joe/})
SELECT * FROM users WHERE name LIKE "Joe%" db.users.find({name:/^Joe/})
SELECT * FROM users WHERE age>33 AND age<=40 db.users.find({'age':{$gt:33,$lte:40}})})
SELECT * FROM users ORDER BY name DESC db.users.find().sort({name:-1})
CREATE INDEX myindexname ON users(name) db.users.ensureIndex({name:1})
CREATE INDEX myindexname ON users(name,ts DESC) db.users.ensureIndex({name:1,ts:-1})
SELECT * FROM users WHERE a=1 and b='q' db.users.find({a:1,b:'q'})
SELECT * FROM users LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20)
SELECT * FROM users WHERE a=1 or b=2 db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )
SELECT * FROM users LIMIT 1 db.users.findOne()
EXPLAIN SELECT * FROM users WHERE z=3 db.users.find({z:3}).explain()
SELECT DISTINCT last_name FROM users db.users.distinct('last_name')
SELECT COUNT(*y) FROM users db.users.count()
SELECT COUNT(*y) FROM users where AGE > 30 db.users.find({age: {'$gt': 30}}).count()
SELECT COUNT(AGE) from users db.users.find({age: {'$exists': true}}).count()
UPDATE users SET a=1 WHERE b='q' db.users.update({b:'q'}, {$set:{a:1}}, false, true)
UPDATE users SET a=a+2 WHERE b='q' db.users.update({b:'q'}, {$inc:{a:2}}, false, true)
DELETE FROM users WHERE z="abc" db.users.remove({z:'abc'});
###################################################
一、操作符
操作符相信大家肯定都知道了,就是等于、大于、小于、不等于、大于等于、小于等于,但是在mongodb里不能直接使用这些操作符。在mongodb里的操作符是这样表示的:
(1) $gt > (大于)
(2) $lt< (小于)
(3) $gte>= (大于等于)
(4) $lt<= (小于等于)
(5) $ne!= (不等于)
(6) $inin (包含)
(7) $ninnot in (不包含)
(8) $existsexist (字段是否存在)
(9) $inc对一个数字字段field增加value
(10) $set就是相当于sql的set field = value
(11) $unset就是删除字段
(12) $push把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去
(13) $pushAll同$push,只是一次可以追加多个值到一个数组字段内
(14) $addToSet增加一个值到数组内,而且只有当这个值不在数组内才增加。
(15) $pop删除最后一个值:{ $pop : { field : 1 } }删除第一个值:{ $pop : { field : -1 } }注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。mongodb 1.1及以后的版本才可以用
(16) $pull从数组field内删除一个等于value值
(17) $pullAll同$pull,可以一次删除数组内的多个值
(18) $ 操作符是他自己的意思,代表按条件找出的数组里面某项他自己。这个比较坳口,就不说了。
二、CURD 增、改、读、删
增加
复制代码代码如下:
db.collection->insert({'name' => 'caleng', 'email' => 'admin#admin.com'});
是不是灰常简单呀,对就是这么简单,它没有字段的限制,你可以随意起名,并插入数据
复制代码代码如下:
db.collection.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条大于1记录
db.collection.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 大于3的记录 全更新了
db.collection.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 大于4的记录 只加进去了第一条
db.collection.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 大于5的记录 全加进去
查询
复制代码代码如下:
db.collection.find(array('name' => 'ling'), array('email'=>'[email protected]'))
db.collection.findOne(array('name' => 'ling'), array('email''[email protected]'))
大家可以看到查询我用了两种不同的写法,这是为什么,其实这跟做菜是一样的,放不同的调料,炒出的菜是不同的味道。下面给大家说一下,这两种调料的不同作用。
findOne()只返回一个文档对象,find()返回一个集合列表。
也就是说比如,我们只想查某一条特定数据的详细信息的话,我们就可以用findOne();
如果想查询某一组信息,比如说一个新闻列表的时候,我们就可以作用find();
那么我想大家这时一定会想到我想对这一个列表排序呢,no problem mongodb会为您全心全意服务
复制代码代码如下:
db.collection.find().sort({age:1}); //按照age正序排列
db.collection.find().sort({age:-1}); //按照age倒序排列
db.collection.count(); //得到数据总数
db.collection.limit(1); //取数据的开始位置
db.collection.skip(10); //取数据的结束位置
//这样我们就实现了一个取10条数据,并排序的操作。
删除
删除有两个操作 remove()和drop()
复制代码代码如下:
db.collection.remove({"name",'jerry'}) //删除特定数据
db.collection.drop() //删除集合内的所有数据
distinct操作
复制代码代码如下:
db.user.distinct('name', {'age': {$lt : 20}})
2. 熟悉MongoDB的数据操作语句,类sql
数据库操作语法
mongo --path
db.AddUser(username,password) 添加用户
db.auth(usrename,password) 设置数据库连接验证
db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库
db.commandHelp(name) returns the help for the command
db.Database(fromdb,todb,fromhost) 复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址
db.createCollection(name,{size:3333,capped:333,max:88888}) 创建一个数据集,相当于一个表
db.currentOp() 取消当前库的当前操作
db.dropDataBase() 删除当前数据库
db.eval(func,args) run code server-side
db.getCollection(cname) 取得一个数据集合,同用法:db['cname'] or db.cname
db.getCollenctionNames() 取得所有数据集合的名称列表
db.getLastError() 返回最后一个错误的提示消息
db.getLastErrorObj() 返回最后一个错误的对象
db.getMongo() 取得当前服务器的连接对象get the server connection object
db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair
db.getName() 返回当操作数据库的名称
db.getPrevError() 返回上一个错误对象
db.getProfilingLevel() ?什么等级
db.getReplicationInfo() ?什么信息
db.getSisterDB(name) get the db at the same server as this onew
db.killOp() 停止(杀死)在当前库的当前操作
db.printCollectionStats() 返回当前库的数据集状态
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus() 返回当前数据库是否为共享数据库
db.removeUser(username) 删除用户
db.repairDatabase() 修复当前数据库
db.resetError()
db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1}
db.setProfilingLevel(level) 0=off,1=slow,2=all
db.shutdownServer() 关闭当前服务程序
db.version() 返回当前程序的版本信息
数据集(表)操作语法
db.linlin.find({id:10}) 返回linlin数据集ID=10的数据集
db.linlin.find({id:10}).count() 返回linlin数据集ID=10的数据总数
db.linlin.find({id:10}).limit(2) 返回linlin数据集ID=10的数据集从第二条开始的数据集
db.linlin.find({id:10}).skip(8) 返回linlin数据集ID=10的数据集从0到第八条的数据集
db.linlin.find({id:10}).limit(2).skip(8) 返回linlin数据集ID=1=的数据集从第二条到第八条的数据
db.linlin.find({id:10}).sort() 返回linlin数据集ID=10的排序数据集
db.linlin.findOne([query]) 返回符合条件的一条数据
db.linlin.getDB() 返回此数据集所属的数据库名称
db.linlin.getIndexes() 返回些数据集的索引信息
db.linlin.group({key:...,initial:...,rece:...[,cond:...]})
db.linlin.mapRece(mayFunction,receFunction,<optional params>)
db.linlin.remove(query) 在数据集中删除一条数据
db.linlin.renameCollection(newName) 重命名些数据集名称
db.linlin.save(obj) 往数据集中插入一条数据
db.linlin.stats() 返回此数据集的状态
db.linlin.storageSize() 返回此数据集的存储大小
db.linlin.totalIndexSize() 返回此数据集的索引文件大小
db.linlin.totalSize() 返回些数据集的总大小
db.linlin.update(query,object[,upsert_bool]) 在此数据集中更新一条数据
db.linlin.validate() 验证此数据集
db.linlin.getShardVersion() 返回数据集共享版本号
Ⅳ 怎么安装PHP环境
LAMP/LNMP 环境搭建
一.检查系统环境
1.确认centos版本
[root@localhost ~]# cat /etc/redhat-release
2.检查是否安装过apache
rpm -qa | grep httpd
或者:
apachectl -v
或者:
httpd -v
3.检查是否安装过Mysql
service mysqld start
如果未被识别则没有安装
如果系统安装过,或者安装失败,清理一下系统
4.清理Mysql痕迹
yum remove mysql
rm -f /etc/my.cnf
5.卸载Apache包
rpm -qa|grep httpd
注意:如果是新的系统或者你从来没有尝试安装过,则以上步骤省略
二.安装Apache、PHP、Mysql
停止防火墙服务
[root@localhost ~]# systemctl stop firewalld.service
禁用防火墙开机启动服务
[root@localhost ~]# systemctl disable firewalld.service
1.安装apache
[root@localhost ~]# yum -y install httpd
2.安装php
[root@localhost ~]# yum -y install php
3.安装php-fpm
[root@localhost ~]# yum -y install php-fpm
4.安装Mysql
[root@localhost ~]# yum -y install mysql
5.安装 mysql-server
[root@localhost ~]# yum install mariadb-server
CentOS 7+ 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了,entos7配置教程上,大多都是安装mariadb,因为centos7默认将mariadb视作mysql。
因为mysql被oracle收购后,原作者担心mysql闭源,所以又写了一个mariadb,这个数据库可以理解为mysql的分支。如果需要安装mariadb,只需通过yum就可。
6.安装 php-mysql
[root@localhost ~]# yum -y install php-mysql
三.安装基本常用扩展包
1.安装Apache扩展包
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
2.安装PHP扩展包
yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-devel
3.安装Mysql扩展包
yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
四.配置Apache、mysql开机启动
重启Apache、mysql服务(注意这里和centos6有区别,Cenots7+不能使用6的方式)
systemctl start httpd.service #启动apache
systemctl stop httpd.service #停止apache
systemctl restart httpd.service #重启apache
systemctl enable httpd.service #设置apache开机启动
重启数据库
#启动MariaDB
[root@localhost ~]# systemctl start mariadb.service
#停止MariaDB
[root@localhost ~]# systemctl stop mariadb.service
#重启MariaDB
[root@localhost ~]# systemctl restart mariadb.service
#设置开机启动
[root@localhost ~]# systemctl enable mariadb.service
五.配置Mysql
初次安装mysql是没有密码的,我们要设置密码,mysql的默认账户为root
方式1:设置 MySQL 数据 root 账户的密码:
[root@localhost ~]# mysql_secure_installation
当出现如下提示时候直接按回车:
Enter current password for root
出现如下再次回车:
Set root password? [Y/n]
出现如下提示输入你需要设置的密码,这里输入了root,输入密码是不显示的,回车后再输入一次确认:
New password:
接下来还会有四个确认,分别是:
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]
直接回车即可。
方式2:进入mysql mysql -r
修改mysql密码:set password for 'root'@'localhost'=password('root');
mysql授权远程连接(navicat等): grant all on *.* to root identified by 'root';
六.测试环境
我们在浏览器地址栏输入http://ip/,正常显示,说明我们的lamp 环境搭建成功
七.安装nginx
yum install yum-priorities -y
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx
Nginx 版本号可变更http://nginx.org/packages/centos/7/noarch/RPMS/$版本
八.配置nginx
1.nginx启动,停止,重启
systemctl start nginx.service #启动nginx
systemctl stop nginx.service #停止
systemctl restart nginx.service #重启
systemctl enable nginx.service #设置开机启动
更改nginx端口号(根据自己需求)
cd /etc/nginx/conf.d/
vim default.conf
把listen 80改成listen 81
3.访问http://ip:81即可看到nginx首页
安装完成访问时候需要启动php-fpm,不重启访问会出现下载文件,重启命令如下
systemctl start php-fpm.service #启动php-fpm
systemctl enable php-fpm.service #设置开机启动
4.更改nginx配置文件识别php
vi /etc/nginx/conf.d/default.conf,把之前的#给去掉就可以了,顺手改一下
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
方法二 安装nginx
yum install nginx
启动nginx,并设置为开机启动
systemctl start nginx
systemctl enable nginx
5.在 /usr/share/nginx/html中新建一个test.php
访问http://ip:81/test.php即可看到php页面
修改完成配置记得启动apache 和php-fpm 哦!
九.负载配置
upstream site{
server 172.16.170.138;
server 172.16.170.139;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://site;
}
apache 默认目录 /var/www/html
nginx 默认目录 /usr/share/nginx/html
升级php版本
centos7 默认安装php是5.4
查看yum的可安装的php版本列表
yum provides php
开始升级PHP更新源:
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum remove php-common -y #移除系统自带的php-common
php72版本
yum install -y php72w php72w-opcache php72w-xml php72w-mcrypt php72w-gd php72w-devel php72w-mysql php72w-intl php72w-mbstring
php56版本
yum install -y php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring #安装依赖包
查看php版本
php -v
安装php fpm:
yum install php72w-fpm
yum provides php-fpm #因为我是准备搭建lnmp,所以安装php-fpm,这里会提示多个安装源,选择5.6版本的安装就可以了
yum install php56w-fpm-5.6.31-1.w7.x86_64 -y
systemctl start php-fpm.service 【启动】
systemctl enable php-fpm.service【开机自启动】
CentOS yum有时出现“Could not retrieve mirrorlist ”的解决办法——resolv.conf的配置
原因:没有配置resolv.conf
解决方法:
到/etc目录下配置resolv.conf加入nameserver IP,如:
nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain
保存再次运行上面的命令就可以。
https://blog.csdn.net/mao834099514/article/details/73470001
nginx目录 : /usr/share/nginx/html
/etc/nginx/conf.d/default.conf nginx配置目录
apache目录 : /var/www/html
/etc/httpd/conf/httpd.conf apache配置文件
nginx 配置域名
cd /etc/nginx
cp default.conf imooc.conf
修改server_name imooc.test.com 以及项目目录
配置虚拟域名 windows 访问需要在host增加 linuxip
ServerName www.nine.com
DocumentRoot "/var/www/html/learnlaravel/public"
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
关闭防火墙
setenforce 0
Ⅵ PHP+mysql查询问题
select
SUBSTRING_INDEX(group_concat(aid order by aid desc), ',',1)
,did, SUBSTRING_INDEX(group_concat(zyadd order by aid desc), ',',1),
SUBSTRING_INDEX(group_concat(name order by aid desc ), ',',1)
SUBSTRING_INDEX(group_concat(status order by aid desc), ',',1)
from table group by did
Ⅶ PHP mysql 怎么样只保留100条信息
1.每次插入前,你先用count获取当前总条数,最早录入时间,用group by一个语句就可以实现了。
2.当总条数小于100,直接新增。
3.当用条数大于等于100,根据刚才返回的最早录入时间删除此记录,再新增。
Ⅷ 实现功能:MySQL+php实现新闻列表以及浏览功能,简单就可以,谢谢了!!!
For a description of your Implementation features: MySQL php achieving News and browsing, simple can be ...,
如有进一步需求,请我们联系,
给我留一个你的问题和Email,
有时间可以帮你,绝对救急,
请用BaiHi为我留言,
此回复针对所有来访者和需求者有效,
ES:\\
Ⅸ 花生壳服务器怎么部署php+mysql+nginx网站
国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web 2.0网站。
Ⅹ php 论坛连不上mysql数据库
SQL: SELECT type FROM [Table]usergroups WHERE groupid='7'
Error: Table 'heying.[Table]usergroups' doesn't exist
这段话已经很明确的告诉你了,数据库中不存在这个表,当然原因有两个:
1,PHP连接MYSQL的原因,你单独用PHPMyadmin测试一下看用户名和密码是不是对的,这个很重要,因为复杂问题往往是出现在很弱智的环节
2,实际上真的不存在这个表,呵呵,当然这是由你的安装程序来决定的,PHP安装网站程序会自动创建表,如果没有建立,当然是错误的
打完收工.祝你好运伙计