分页: 3/4 第一页 上页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Aug 1
[mysqld]
basedir=D:/mysql
#bind-address=ip
datadir=D:/mysql/data
#language=D:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
set-variable    = max_connections=500
skip-locking
#skip-networking
set-variable        = key_buffer=384M
set-variable        = max_allowed_packet=M
set-variable        = table_cache=52
set-variable        = sort_buffer=2M
set-variable        = record_buffer=2M
set-variable        = thread_cache=8
# Try number of CPU's*2 for thread_concurrency
set-variable        = thread_concurrency=8
set-variable        = myisam_sort_buffer_size=64M
#set-variable        = connect_timeout=5
#set-variable        = wait_timeout=5
server-id        =
[isamchk]
set-variable        = key_buffer=28M
set-variable        = sort_buffer=28M
set-variable        = read_buffer=2M
set-variable        = write_buffer=2M

[myisamchk]
set-variable        = key_buffer=28M
set-variable        = sort_buffer=28M
set-variable        = read_buffer=2M
set-variable        = write_buffer=2M
[WinMySQLadmin]
Server=D:/mysql/bin/mysqld-nt.exe
Jul 30
有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。

下面的例子显示出如何使用MySQL客户安装新用户。这些例子假定权限已缺省被安装。这意味着为了改变,你必须在MySQL正在运行同一台机器上,你必须作为MySQL root用户连接,并且root用户必须对MySQL数据库有ins�rt权限和reload管理权限。另外,如果你改变了root用户口令,你必须如下的MySQL命令指定它。

你可以通过发出GRANT语句增加新用户:

shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
      IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
      IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

这些GRANT语句安装3个新用户:

monty:可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令('something'做这个。注意,我们必须对monty@localhost和monty@"%"发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。

admin:可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。

dummy:可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为'N'--USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。

你也可以直接通过发出Ins�rt语句增加同样的用户存取信息,然后告诉服务器再次装入授权表:

shell> mysql --user=root mysql
mysql> Ins�rt INTO user VALUES('localhost','monty',PASSWORD('something'),
        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> Ins�rt INTO user VALUES('%','monty',PASSWORD('something'),
        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> Ins�rt INTO user SET Host='localhost',User='admin',
         Reload_priv='Y', Process_priv='Y';
mysql> Ins�rt INTO user (Host,User,Password)
            VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;

取决于你的MySQL版本,对上述,你可能必须使用一个不同数目'Y'值(在3.22.以前的版本有更少的权限列)。对admin用户,只用在3.22.开始的版本具有的更加可读的Ins�rt扩充的语法。

注意,为了设置一个超级用户,你只需创造一个user表条目,其权限字段设为'Y'。不需要db或host表的条目。

在user表中的权限列不是由最后一个Ins�rt语句明确设置的(对dummy用户),因此那些列被赋予缺省值'N'。这是GRANT USAGE做的同样的事情。

下列例子增加一个用户custom,他能从主机localhost、server.domain和whitehouse.gov连接。他只想要从localhost存取bankaccount数据库,从whitehouse.gov存取expenses数据库和从所有3台主机存取customer数据库。他想要从所有3台主机上使用口令stupid。

为了使用GRANT语句设置个用户的权限,运行这些命令:

shell> mysql --user=root mysql
mysql> GRANT Sel�ct,Ins�rt,Up�ate,Del�te,Cr�ate,Dro
      ON bankaccount.*
      TO custom@localhost
      IDENTIFIED BY 'stupid';
mysql> GRANT Sel�ct,Ins�rt,Up�ate,Del�te,Cr�ate,Dro
      ON expenses.*
      TO custom@whitehouse.gov
      IDENTIFIED BY 'stupid';
mysql> GRANT Sel�ct,Ins�rt,Up�ate,Del�te,Cr�ate,Dro
      ON customer.*
      TO custom@'%'
      IDENTIFIED BY 'stupid';

通过直接修改授权表设置用户权限,运行这些命令(注意,在结束时FLUSH PRIVILEGES):

shell> mysql --user=root mysql
mysql> Ins�rt INTO user (Host,User,Password)
    VALUES('localhost','custom',PASSWORD('stupid'));
mysql> Ins�rt INTO user (Host,User,Password)
    VALUES('server.domain','custom',PASSWORD('stupid'));
mysql> Ins�rt INTO user (Host,User,Password)
    VALUES('whitehouse.gov','custom',PASSWORD('stupid'));
mysql> Ins�rt INTO db
    (Host,Db,User,Sel�ct_priv,Ins�rt_priv,Up�ate_priv,Del�te_priv,
    Cr�ate_priv,Dro_priv)
    VALUES
    ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> Ins�rt INTO db
    (Host,Db,User,Sel�ct_priv,Ins�rt_priv,Up�ate_priv,Del�te_priv,
    Cr�ate_priv,Dro_priv)
    VALUES
    ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');
mysql> Ins�rt INTO db
    (Host,Db,User,Sel�ct_priv,Ins�rt_priv,Up�ate_priv,Del�te_priv,
    Cr�ate_priv,Dro_priv)
    VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;

头3个Ins�rt语句增加user表条目,允许用户custom用给定口令从不同的主机进行连接,但是没有授予任何许可(所有权限被设置为缺省值'N')。后3个Ins�rt语句增加db表条目,授予custom以bankaccount、expenses和customer数据库权限,但是只能在从正确的主机存取时。通常,在授权表直接被修改时,服务器必须被告知再次装入他们(用FLUSH PRIVILEGES)以便使权限修改生效。

如果你想要给特定的用户从一个给定的域上的任何机器上存取权限,你可以发出一个如下的GRANT语句:

mysql> GRANT ...
      ON *.*
      TO myusername@"%.mydomainname.com"
      IDENTIFIED BY 'mypassword';

为了通过直接修改授权表做同样的事情,这样做:

mysql> Ins�rt INTO user VALUES ('%.mydomainname.com', 'myusername',
      PASSWORD('mypassword'),...);
mysql> FLUSH PRIVILEGES;

你也可以使用xmysqladmin、mysql_webadmin甚至xmysql在授权表中插入、改变和更新值。你可以在MySQL的Contrib目录找到这些实用程序。
Tags:
Jul 30
批处理是一种非交互式运行MySQL程序的方法,如同您在MySQL中使用的命令一样,你仍然将使用这些命令。

为了实现批处理,您重定向一个文件到MySQL程序中,首先我们需要一个文本文件,这个文本文件包含有与我们在MySQL中输入的命令相同的文本。

比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为New_Data.txt及任何其他的合法名字,并不一定要以后缀sql结尾):

  USE Meet_A_Geek;
  Ins�rt INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Block");
  Ins�rt INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Newton");
  Ins�rt INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Simmons");

注意上面的这些句子的语法都必须是正确的,并且每个句子以分号结束。

上面的USE命令选择数据库,Ins�rt命令插入数据。

下面我们要把上面的文件导入到数据库中,导入之前要确认数据库已经在运行,即是mysqld进程(或者说服务,Windows NT下面称为”服务“,unix下面为”进程“)已经在运行。

然后运行下面的命令:

  bin/mysql ?Cp < /home/mark/New_Data.sql  

接着按提示输入密码,如果上面的文件中的语句没有错误,那么这些数据就被导入到了数据库中。

命令行中使用LOAD DATA INFILE 从文件中导入数据到数据库,现在您可能会问自己,"究竟为什么我要输入所有的这些SQL语句到文件中,然后通过程序运行它们呢?”

这样看起来好像需要大量的工作。很好,你这样想很可能就对了。但是假如你有从所有这些命令中产生的Log记录呢?现在这样就很棒,嗯,大多数数据库都会自动产生数据库中的事件记录的Log。而大部分Log都包含有用过的原始的SQL命令。因此,如果您不能从您现在的数据库中导出数据到新的mysql数据库中使用,那么您可以使用log和mysql的批处理特性,来快速且方便地导入您地数据。当然,这样就省去了打字的麻烦。  
LOAD DATA INFILE

这是我们要介绍的最后一个导入数据到MySQL数据库中的方法。这个命令与mysqlimport非常相似,但这个方法可以在mysql命令行中使用。也就是说您可以在所有使用API的程序中使用这个命令。使用这种方法,您就可以在应用程序中导入您想要导入的数据。

使用这个命令之前,mysqld进程(服务)必须已经在运行。

启动MySQL命令行:

  bin/mysql ?Cp

按提示输入密码,成功进入MySQL命令行之后,输入下面的命令:

USE Meet_A_Geek;
LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE oders;

简单的讲,这样将会把文件data.sql中的内容导入到表Orders中,如mysqlimport工具一样,这个命令也有一些可以选择的参数。比如您需要把自己的电脑上的数据导入到远程的数据库服务器中,您可以使用下面的命令:

LOAD DATA LOCAL INFILE "C:\MyDocs\SQL.txt" INTO TABLE oders;

上面的LOCAL参数表示文件是本地的文件,服务器是您所登陆的服务器。

这样就省去了使用ftp来上传文件到服务器,MySQL替你完成了。

您也可以设置插入语句的优先级,如果您要把它标记为低优先级(LOW_PRIORITY),那么MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:

  LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE oders;

您也可以指定是否在插入数据的时候,取代或者忽略文件与数据表中重复的键值。替代重复的键值的语法:

  LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" REPLACE INTO TABLE oders;

上面的句子看起来有点笨拙,但却把关键字放在了让您的剖析器可以理解的地方。

下面的一对选项描述了文件的记录格式,这些选项也是在mysqlimport工具中可以用的。他们在这里看起来有点不同。首先,要用到FIELDS关键字,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:

  TERMINATED BY character
  ENCLOSED BY character
  ESCAPED BY character

这些关键字与它们的参数跟mysqlimport中的用法是一样的。

TERMINATED BY 描述字段的分隔符,默认情况下是tab字符(\t);

ENCLOSED BY描述的是字段的括起字符。比方以引号括起每一个字段 ;

ESCAPED BY 描述的转义字符。默认的是反些杠(backslash:\ )。

下面仍然使用前面的mysqlimport命令的例子,用LOAD DATA INFILE语句把同样的文件导入到数据库中:

  LOAD DATA INFILE "/home/mark/Orders.txt"
REPLACE INTO TABLE oders FIELDS TERMINATED BY '
,' ENCLOSED BY '"';

LOAD DATA INFILE语句中有一个mysqlimport工具中没有特点,与此同进它还可以按指定的列把文件导入到数据库中。

当我们要把数据的一部分内容导入的时候,这个特点就很重要。比方说,我们要从Access数据库升级到MySQL数据库的时候,需要加入一些栏目(列/字段/field)到MySQL数据库中,以适应一些额外的需要。

这个时候,我们的Access数据库中的数据仍然是可用的,但是因为这些数据的栏目(field)与MySQL中的不再匹配,因此而无法再使用mysqlimport工具。尽管如此,我们仍然可以使用LOAD DATA INFILE,下面的例子显示了如何向指定的栏目(field)中导入数据:

  LOAD DATA INFILE "/home/Order.txt"
INTO TABLE oders(Order_Number, oder_Date, Customer_ID);

我们可以指定需要的栏目(fields)。这些指定的字段依然是以括号括起,由逗号分隔的,如果遗漏了其中任何一个,MySQL将会做出提醒。
Tags:
Jul 30
当初次在机器上安装完Mysql时,你可以匿名进行访问数据库或者以不带口令的root身份进入数据库.另外如果你是一个管理员,你还要进行一些用户的建立及授权,这又涉及到设置密码的问题.下面我们就讨论一下如何设置密码:

首先我们应该知道Mysql数据库中的口令存储必须用password()函数加密它.因为在user表中是以加密形式存储口令,而不是作为纯文本.如果你没有加密,直接在数据库中执行以下语句:

use mysql
ins�rt into user (host,user,password) values('%','user_name','your password');
flush privileges;

相信结果不会让你满意.因为服务器比较的是加密的值,所以服务器连接一定失败.这里需要说明的是flush privileges;这条命令起到了重新加载授权表.你也可以在shell下直接用mysqladmin -u root reload或者mysqladmin -u root flush-privileges来实现重载授权表.

在Mysql环境下,你可以使用以下语句进行设置密码:

.ins�rt into user(host,user,password) values('%','user_name',password("your password");

2.set password for user_name = password("your password")
以上两种方法都必须进行重载授权表.

3.当然你也可以在创建一个用户时直接设置密码,grant语句将为你自动加密口令.
如 :grant all on *.* to user_name@% identified by "your password";
另外你也可以在shell环境下用mysqladmin程序来设置密码
如: mysqladmin -u root password "your password"
Tags:
Jul 30
1.新建用户。
//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub
ject) values("localhost","pppadmin",password("passwd"),'','','');

这样就创建了一个名为:phplamp   密码为:1234   的用户。

然后登录一下。

mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功

2.为用户授权。

//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限。
>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作

/*
如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表。
mysql>flush privileges;
*/

3.删除用户。
@>mysql -u root -p
@>密码
mysql>Delete FROM user Where User="phplamp" and Host="localhost";
mysql>flush privileges;
//删除用户的数据库
mysql>drop database phplampDB;

4.修改指定用户密码。
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";
mysql>flush privileges;

5.列出所有数据库

mysql>show database;

6.切换数据库

mysql>use '数据库名';

7.列出所有表

mysql>show tables;

8.显示数据表结构

mysql>describe 表名;

9.删除数据库和数据表

mysql>drop database 数据库名;
mysql>drop table 数据表名;
Tags:
分页: 3/4 第一页 上页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]