【转】mysql

MySQL实用命令
Wikipedia,自由的百科全书
一) 连接MYSQL:
   格式: mysql -h主机地址 -u用户名 -p用户密码

1、例1:连接到本机上的MYSQL
   首先在打开DOS窗口,然后进入mysql安装目录下的bin目录下,例如: D:\mysql\bin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:连接到远程主机上的MYSQL
   假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:
   mysql -h10.0.0.1 -uroot -p123
  (注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令
   exit (回车)

(二) 修改密码:
   格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码123。首先在DOS下进入目录C:\mysql\bin,然后键入以下命令:
   mysqladmin -uroot -password 123
   注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为456
   mysqladmin -uroot -pab12 password 456
(三) 增加新用户:(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
   格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
   例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
   grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

   但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
   例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
   grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
   如果你不想test2有密码,可以再打一个命令将密码消掉。
   grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
(四) 显示命令
1、显示数据库列表:
   show databases;
   刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
   use mysql; //打开库
   show tables;
3、显示数据表的结构:
   describe 表名;
4、建库:
   create database 库名;
5、建表:
   use 库名;
   create table 表名 (字段设定列表);
6、删库和删表:
   drop database 库名;
   drop table 表名;
7、将表中记录清空:
   delete from 表名;
8、显示表中的记录:
   select * from 表名;



MySQL导入导出命令
1.导出整个数据库
  mysqldump -u 用户名 -p 数据库名 > 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
  mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

3.导出一个数据库结构
  mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
  -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库
  常用source 命令
  进入mysql数据库控制台,
  如mysql -u root -p
  mysql>use 数据库
  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
  mysql>source d:wcnc_db.sql  (注:如果写成source d:\wcnc_db.sql,就会报语法错误)
 
 
 
 
 
 
===================================================================
 

1.CREATE USER

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
    [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
CREATE USER用于创建新的 MySQL账户。要使用 CREATE USER,您必须拥有 mysql数据库的全局 CREATE USER权限,或拥有 INSERT权限。对于每个账户, CREATE USER会在没有权限的 mysql.user表中创建一个新记录。如果 账户已经存在,则出现错误。
使用自选的 IDENTIFIED BY子句,可以为账户给定一个密码。 user值和 密码的给定方法和 GRANT语句一样。特别是,要在纯文本中指定密码,需忽略 PASSWORD关键词。要把 密码指定为由 PASSWORD()函数返回的混编值,需包含关键字 PASSWORD

2.使用GRANT语句

最好的方法是使用 GRANT语句,因为这样更精确,错误少。从 MySQL 3.22.11起提供了 GRANT;它的主要用途是来给帐户授权的,但也可用来建立新帐户并同时授权。注意:当mysql运行于no_auto_create_user时要提供新建用户的密码,否则不能创新用户。
下面的示例说明如何使用 MySQL客户端程序来设置新用户。
首先,使用 MySQL程序以 MySQL root用户来连接服务器:
shell> MySQL --user=root MySQL
如果你为 root账户指定了密码,还需要为该 MySQL命令和本节中的其它命令提供 --password-p选项。
root连接到服务器上后,可以添加新账户。下面的语句使用 GRANT来设置四个新账户:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';
GRANT语句创建的账户有下面的属性:
         其中两个账户有相同的用户名 monty和密码 some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ( 'monty'@'localhost' )只用于从本机连接时。另一个账户 ( 'monty'@'%' )可用于从其它主机连接。请注意 monty的两个账户必须能从任何主机以 monty连接。没有 localhost账户,当 monty从本机连接时, mysql_install_db创建的 localhost的匿名用户账户将占先。结果是, monty将被视为匿名用户。原因是匿名用户账户的 Host列值比 'monty'@'%'账户更具体,这样在 user表排序顺序中排在前面。 ( user表排序的讨论要参考mysql手册)
         一个账户有用户名 admin,没有密码。该账户只用于从本机连接。授予了 RELOADPROCESS管理权限。这些权限允许 admin用户执行 mysqladmin reloadmysqladmin refreshmysqladmin flush- xxx命令,以及 mysqladmin processlist。未授予访问数据库的权限。你可以通过 GRANT语句添加此类权限。
         一个账户有用户名 dummy,没有密码。该账户只用于从本机连接。未授予权限。通过 GRANT语句中的 USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为 'N'。假定你将在以后将具体权限授予该账户。

3.直接操作MySQL授权表

    除了 GRANT,你可以直接用 INSERT语句创建相同的账户,然后使用 FLUSH PRIVILEGES告诉服务器重载授权表。
shell> mysql --user=root mysql
mysql> INSERT INTO user
    ->     VALUES('localhost','monty',PASSWORD('some_pass'),
    ->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user
    ->     VALUES('%','monty',PASSWORD('some_pass'),
    ->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
    ->     Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;
当你用 INSERT创建账户时使用 FLUSH PRIVILEGES的原因是告诉服务器重读授权表。否则,只有重启服务器后更改方会被注意到。使用 GRANT,则不需要使用 FLUSH PRIVILEGES
INSERT使用 PASSWORD()函数是为了加密密码。 GRANT语句为你加密密码,因此不需要 PASSWORD()
'Y'值启用账户权限。对于 admin账户,还可以使用更加可读的 INSERT扩充的语法(使用 SET)。
在为 dummy账户的 INSERT语句中,只有 user表中的 HostUserPassword列记录为指定的值。没有一个权限列为显式设置,因此 MySQL将它们均指定为 默认值 'N'。这样等同于 GRANT USAGE的操作。
请注意要设置超级用户账户,只需要创建一个权限列设置为 'Y'user表条目。 user表权限为全局权限,因此其它 授权表不再需要条目。

4.举几个应用grant创建帐户和授权的例子

下面的例子创建 3个账户,允许它们访问专用数据库。每个账户的用户名为 custom,密码为 obscure
要想用 GRANT创建账户,使用下面的语句:
shell> MySQL --user=root MySQL
shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    ->     ON bankaccount.*
    ->     TO 'custom'@'localhost'
    ->     IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    ->     ON expenses.*
    ->     TO 'custom'@'whitehouse.gov'
    ->     IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    ->     ON customer.*
    ->     TO 'custom'@'server.domain'
    ->     IDENTIFIED BY 'obscure';
3个账户可以用于:
         1个账户可以访问 bankaccount数据库,但只能从本机访问。
         2个账户可以访问 expenses数据库,但只能从主机 whitehouse.gov访问。
         3个账户可以访问 customer数据库,但只能从主机 server.domain访问。
要想不用 GRANT设置 custom账户,使用 INSERT语句直接修改 授权表:
shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('localhost','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('whitehouse.gov','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('server.domain','custom',PASSWORD('obscure'));
mysql> INSERT INTO db
    ->     (Host,Db,User,Select_priv,Insert_priv,
    ->     Update_priv,Delete_priv,Create_priv,Drop_priv)
    ->     VALUES('localhost','bankaccount','custom',
    ->     'Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    ->     (Host,Db,User,Select_priv,Insert_priv,
    ->     Update_priv,Delete_priv,Create_priv,Drop_priv)
    ->     VALUES('whitehouse.gov','expenses','custom',
    ->     'Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    ->     (Host,Db,User,Select_priv,Insert_priv,
    ->     Update_priv,Delete_priv,Create_priv,Drop_priv)
    ->     VALUES('server.domain','customer','custom',
    ->     'Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;
 
3INSERT语句在 user表中加入条目,允许用户 custom从各种主机用给定的密码进行连接,但不授予全局权限 (所有权限设置为 默认值 'N' )。后面 3INSERT语句在 user表中加入条目,为 custom授予 bankaccountexpensescustomer数据库权限,但只能从合适的主机访问。 通常若直接修改 授权表,则应告诉服务器用 FLUSH PRIVILEGES 重载授权表,使权限更改生效。
如果你想要让某个用户从给定域的所有机器访问(例如, mydomain.com ) ,你可以在账户名的主机部分使用含' % '通配符的 GRANT 语句:
mysql> GRANT ...
    ->     ON *.*
    ->     TO 'myname'@'%.mydomain.com'
    ->     IDENTIFIED BY 'mypass';
要想通过直接修改授权表来实现:
mysql> INSERT INTO user (Host,User,Password,...)
    ->     VALUES('%.mydomain.com','myname',PASSWORD('mypass'),...);
mysql> FLUSH PRIVILEGES;

5.创建账户的其它方法是使用MySQL账户管理功能的第三方程序。phpMyAdmin即是一个程序。

从MySQL删除用户账户

要想移除账户,应使用 DROP USER语句
 
 

你可能感兴趣的:(mysql,数据库,职场,休闲)