phpMyadmin创建Mysql数据库及独立数据库帐号

 更新时间:2016年11月25日 16:39  点击:2010

首先我们要登陆php教程(做为现在的主流开发语言)MyAdmin,不做演示。

2、创建一个数据库教程,如下图,在php(做为现在的主流开发语言)MyAdmin右边窗口中,填写数据库名称,点创建即可。

例如我们这里创建一个名字为:cncmstest 的数据库
创建成功会有如下提示:


3、点击左上角的主页按钮,返回php(做为现在的主流开发语言)MyAdmin主界面:


4、在主界面的右边点击“权限”来创建数据库帐号。


5、在权限页面中,我们点击“添加新用户”


6、在该页面中,我们填写要创建的数据库用户名,该用户的访问范围,及密码。

如上图,我们填写了用户名为:cncmsuser,该数据库用户只允许本机访问,主机一项选择本地;密码我们使用自动生成的,点下面的“Generate”会生成一个随机密码,然后点“Copy”会自动填写到密码框中。
下面的框都不选,直接拉到页面最下面点执行即可创建一个新用户。
数据库用户创建成功,会返回如下页面:


7、最重要的一步,设置该用户的数据库访问权限
在数据库用户添加成功返回的页面中可以直接设置权限。这里我们选择按数据库指定权限:

如上图,在数据库列表中选择我们刚刚创建的cncmstest,即会自动进入该数据库的权限设置页面。

在上图的权限设置中,我们把“数据”、“结构”两列的权限全部选中,管理权限都不要选。点执行即可。

到这里,我们已经全部设置完毕了,创建了一个数据库:cncmstest,并创建了数据库用户cncmsuser,特别指定了该用户只对cncmstest的访问权限。如此,便达到了我们一开始所讲的目的:为每一个数据库指定独立的用户访问权限。

 

在编译安装 sphinx 的时候出现很多中文乱码,最后抛出错误卡住了。 我去到官方直接下载一个 rpm 包,安装就很爽。。。具体错误不想研究了。忙开发呢~~
安装两个包。一个是 mmseg   这个是生成中文字典的程序  一个是  csft 也就是中国版的sphinx
rpm -ivh 安装完以后。很顺利~~不到半分钟就装完了。。。
偷懒,中文字典库,我直接去 csft 官方下载了。挺好的想得很周到。。。
unigram.txt      uni.lib
unigram.txt   字典文本,可以在里面添加你自己的关键字
然后使用
mmseg -u unigram.txt  生成字典文件:unigram.txt.uni   然后重命名一下  uni.lib  这个就是sphinx 认识的字典了。
放哪里? 放你在 sphinx.conf 里面配置的字典路径里面,等会说到
然后基本就差不多了
在看下sphinx 几个实用的程序
[root@beihai365 /]# csft-
csft-indexer  csft-search   csft-searchd
csft-indexer  是生成全文搜索索引的 程序
csft-search  是测试搜索是否生效用的,也很好用,不如我还没用客户端脚本开发,就可以用这个来查看全文搜索是否成功
csft-searchd  这个就是 sphinx 搜索的守护程序了。 启动以后,就可以用脚本 php python 等,开查询了。
就那么简单~~
在看下关键的两部分东西
sphinx.conf 配置文件
view plaincopy to clipboardprint?
source tmsgs   
{   
        type                                    = mysql   
        sql_host                                = localhost   
        sql_user                                = root   
        sql_pass                                = 1   
        sql_db                                  = phpwind75sp3   
        sql_port                                = 3306  # optional, default is 3306   
        #sql_sock                                = /tmp/mysql3307.sock   
        sql_query_pre                           = SET NAMES gbk   
        sql_query                               = SELECT id,name,type,stock FROM pw_tools   
        #sql_attr_uint                          = id   
        sql_attr_uint                           = stock   
}   
  
index tmsgsindex   
{   
        source                                  = tmsgs   
        path                                    = /var/mmseg/searchdata/beihai365   
        docinfo                                 = extern   
        charset_type                            = zh_cn.gbk   
        #min_prefix_len  = 0   
        #min_infix_len  = 2   
        #ngram_len = 2   
        charset_dictpath                        = /var/mmseg/data   
        #min_prefix_len                          = 0   
        #min_infix_len                           = 0   
        #min_word_len                            = 2   
}   
  
indexer   
{   
        mem_limit                               = 128M   
}   
  
searchd   
{   
        #listen                                = 3312   
        log                                 = /var/log/searchd.log   
        query_log                           = /var/log/query.log   
        read_timeout                        = 5   
        max_children                        = 30   
        pid_file                            = /var/log/searchd.pid   
        max_matches                         = 1000   
        #seamless_rotate                     = 1   
        #preopen_indexes                     = 0   
        #unlink_old                          = 1   
}  
source tmsgs
{
        type                                    = mysql
        sql_host                                = localhost
        sql_user                                = root
        sql_pass                                = 1
        sql_db                                  = phpwind75sp3
        sql_port                                = 3306  # optional, default is 3306
        #sql_sock                                = /tmp/mysql3307.sock
        sql_query_pre                           = SET NAMES gbk
        sql_query                               = SELECT id,name,type,stock FROM pw_tools
        #sql_attr_uint                          = id
        sql_attr_uint                           = stock
}
index tmsgsindex
{
        source                                  = tmsgs
        path                                    = /var/mmseg/searchdata/beihai365
        docinfo                                 = extern
        charset_type                            = zh_cn.gbk
        #min_prefix_len  = 0
        #min_infix_len  = 2
        #ngram_len = 2
        charset_dictpath                        = /var/mmseg/data
        #min_prefix_len                          = 0
        #min_infix_len                           = 0
        #min_word_len                            = 2
}
indexer
{
        mem_limit                               = 128M
}
searchd
{
        #listen                                = 3312
        log                                 = /var/log/searchd.log
        query_log                           = /var/log/query.log
        read_timeout                        = 5
        max_children                        = 30
        pid_file                            = /var/log/searchd.pid
        max_matches                         = 1000
        #seamless_rotate                     = 1
        #preopen_indexes                     = 0
        #unlink_old                          = 1
}

再看一下 测试客户端代码
view plaincopy to clipboardprint?
<?php   
    header("Content-type:text/html;charset=utf-8");   
    include 'sphinxapi.php';   
    $cl = new SphinxClient();   
    $cl->SetServer('localhost',3312);   
    $cl->SetMatchMode(SPH_MATCH_ALL);   
    $cl->SetArrayResult(true);   
    $res = $cl->Query("名卡","*");   
    print_r($res);   
      
?>  
<?php
header("Content-type:text/html;charset=utf-8");
include 'sphinxapi.php';
$cl = new SphinxClient();
$cl->SetServer('localhost',3312);
$cl->SetMatchMode(SPH_MATCH_ALL);
$cl->SetArrayResult(true);
$res = $cl->Query("名卡","*");
print_r($res);

?>
“名卡”这个关键字是我自己手动在字典里面添加的。看是否能真的搜到
view plaincopy to clipboardprint?
Array   
(   
    [error] =>   
    [warning] =>   
    [status] => 0   
    [fields] => Array   
        (   
            [0] => name   
            [1] => type   
        )   
  
    [attrs] => Array   
        (   
            [stock] => 1   
        )   
  
    [matches] => Array   
        (   
            [0] => Array   
                (   
                    [id] => 8   
                    [weight] => 1   
                    [attrs] => Array   
                        (   
                            [stock] => 100   
                        )   
  
                )   
  
        )   
  
    [total] => 1   
    [total_found] => 1   
    [time] => 0.018   
    [words] => Array   
        (   
            [名卡] => Array   
                (   
                    [docs] => 1   
                    [hits] => 1   
                )   
  
        )   
  
)  
Array
(
    [error] =>
    [warning] =>
    [status] => 0
    [fields] => Array
        (
            [0] => name
            [1] => type
        )
    [attrs] => Array
        (
            [stock] => 1
        )
    [matches] => Array
        (
            [0] => Array
                (
                    [id] => 8
                    [weight] => 1
                    [attrs] => Array
                        (
                            [stock] => 100
                        )
                )
        )
    [total] => 1
    [total_found] => 1
    [time] => 0.018
    [words] => Array
        (
            [名卡] => Array
                (
                    [docs] => 1
                    [hits] => 1
                )
        )
)
完全没问题。搜索出来了。
几个关键的操作
[root@beihai365 /]# csft-searchd --stop    停止搜索守护
[root@beihai365 /]# csft-indexer --all    针对所有节点生成索引。你也可以针对某个节点生成索引比如:csft-indexer  xx
[root@beihai365 /]# csft-search App   搜索关键字  App 。 不过看下面信息没有搜到和没有命中任何的文档。
Coreseek Full Text Server 3.1
Copyright (c) 2006-2008 coreseek.com
using config file './csft.conf'...
1,
pt:1, 1;        index 'tmsgsindex': query 'App ': returned 0 matches of 0 total in 0.017 sec
words:
1. 'app': 0 documents, 0 hits
当大家在运行这些命令的时候发现,需要你自己手动的置顶 --config  sphinx.conf   配置文件的路径。。很不方便。。
所以我干脆   ln -s  一个在 ./ 。这样不用每次都去敲入  --config  

class DB
{
 //database connection
 var $con = FALSE;

 function DB($MYSQL_HOST=MYSQL_HOST, $MYSQL_USER=MYSQL_USER, $MYSQL_PASS=MYSQL_PASS,$MYSQL_DB=MYSQL_DB)
 {
  $this->con = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) or die("Could not connect to database");

  if ($this->con)
  {
   @mysql_select_db($MYSQL_DB, $this->con) or die ("Could not select database");
  }

  return $this->con;
 }


 function Query($sql, $tran = false)
 {
 // if (!file_exists(MYSQL_LOG))
 // {
 //  @umask(0);
 //  @mkdir(MYSQL_LOG, 0777);
 // }

  // ¼־
  //$fp = @fopen(MYSQL_LOG.date("Ymd").".txt", "a");

  // д־
 // @fwrite($fp, date("Y-m-d H:i:s")."|$sql ");
 // @fclose($fp);

  $this->sql = $sql;

  if ($tran)
  {
   $this->result = @mysql_query($this->sql) OR $this->RollBack();
   return $this->result;
  }
  else
  {
      mysql_query("SET NAMES 'utf8'");
   //mysql_query("SET NAMES 'gbk'");
   $this->result = @mysql_query($this->sql);
   return $this->result;
  }
 }


 function RollBack()
 {
  $this->Query("ROLLBACK;");
  die("MySQL ROLLBACK;");
 }


 function NumRows($result)
 {
  $this->result = $result;
  return @mysql_num_rows($this->result);
 }


 function FetchRow($result)
 {
  $this->result = $result;
  return @mysql_fetch_row($this->result);
 }


 function FetchArray($result)
 {
  $this->result = $result;
  return @mysql_fetch_array($this->result, MYSQL_ASSOC);
 }
 function FetchArray2($result)
 {
  $this->result = $result;
  return @mysql_fetch_array($this->result, MYSQL_BOTH);
 }
 

 function FetchObject($result)
 {
  $this->result = $result;
  return @mysql_fetch_object($this->result);
 }


 function FreeResult($result)
 {
  $this->result = $result;
  return @mysql_free_result($this->result);
 }

 function DataSeek($result)
 {
 //复位记录集指针
  $this->result = $result;
  return mysql_data_seek($this->result,0);
 }
 
 function InsertID()
 {
  //$this->con = $con;
  return @mysql_insert_id($this->con);
 }


 function Close()
 {
  if($this->con)
  {
   @mysql_close($this->con);
  }
 }
}

好了费话不用说多了我们来看看这款php sys_get_temp_dir -返回临时文件路径函数使用方法与实现原理吧。

sys_get_temp_dir
( PHP 5中“ = 5.2.1 )

sys_get_temp_dir -返回目录路径用于临时文件

描述
字符串sys_get_temp_dir (无效)
返回目录路径的PHP商店临时文件在默认情况下。

返回值
返回路径的临时目录中。

实例

例如# 1 sys_get_temp_dir ( )的例子

Examples

Example #1 sys_get_temp_dir() example

<?php
// Create a temporary file in the temporary
// files directory using sys_get_temp_dir()
$temp_file = tempnam(sys_get_temp_dir(), 'Tux');

echo $temp_file;
?>
The above example will output something similar to:

C:WindowsTempTuxA318.tmp

此函数的实现方法:

<?php
if ( !function_exists('sys_get_temp_dir')) {
  function sys_get_temp_dir() {
    if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); }
    if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
    if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
    $tempfile=tempnam(uniqid(rand(),TRUE),'');
    if (file_exists($tempfile)) {
    unlink($tempfile);
    return realpath(dirname($tempfile));
    }
  }
}
?>

php urlencode 与 rawurlencode 教程
rawurlencode
( PHP 4中, PHP 5中)

rawurlencode -网址编码根据的RFC 1738

描述
字符串rawurlencode (字符串$str)
编码特定字符串根据»的RFC 1738 。

参数

str
将URL进行编码。


返回值
返回一个字符串中的所有非字母数字字符除了- _ 。被替换成一个百分号( % )符号后面跟两个十六进制数字。这是编码描述»的RFC 1738年为保护字面字符被解释为特殊的URL分隔和保护的URL被毁损的传输媒体转换与性质(如一些电子邮件系统) 。

实例

例如# 1包括一个密码的FTP网址

<?php
$a = explode('&', $QUERY_STRING);
$i = 0;
while ($i < count($a)) {
    $b = split('=', $a[$i]);
    echo 'Value for parameter ', htmlspecialchars(urldecode($b[0])),
         ' is ', htmlspecialchars(urldecode($b[1])), "<br />n";
    $i++;
}
?>

进行urlencode
( PHP 4中, PHP 5中)

进行urlencode -网址编码字符串

描述
字符串进行urlencode (字符串$str)
此功能方便的编码字符串被用于查询的网址的一部分,作为一种便捷的方式传递变量的下一页。

参数

str
字符串编码。


返回值
返回一个字符串中的所有非字母数字字符除了- _ 。被替换成一个百分号( % )符号后面跟两个十六进制数字和空格编码为加号( + )的迹象。这是相同的编码方式,从公布的数据编码的WWW形式,这是同样的方式在应用/的X WWW的形式了urlencoded的媒体类型。这不同于参考» RFC 1738编码(见rawurlencode ( ) )中,对历史的原因,空格编码为加号( + )的迹象。

实例

例如# 1进行urlencode ( )的例子

<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>


Example #2 urlencode() and htmlentities() example

<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • phpmyadmin config.inc.php配置示例

    phpmyadmin config.inc.php配置示例...2013-09-29
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • springBoot 项目排除数据库启动方式

    这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • PHP连接公司内部服务器的MYSQL数据库的简单实例

    “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
  • C#连接加密的Sqlite数据库的方法

    对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密,下面通过本文给大家介绍C#连接加密的Sqlite数据库的方法,感兴趣的朋友一起看看吧...2020-06-25
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • 深入分析C#连接Oracle数据库的连接字符串详解

    本篇文章是对C#连接Oracle数据库的连接字符串进行了详细的分析介绍,需要的朋友参考下...2020-06-25