mysql笔记

  sql语句时刻都在用,所以就不容易忘记。但mysql管理相关的就用得少了,特别是用户管理用得更少,所以今天复习并尝试了各种管理的方法~做下笔记:

  mysql的用户权限是用一个表来存放的,也就是mysql这一个系统数据库的user数据表。其实这一个表的字段除了password之外都是明文存放的,比较好理解。而password这一字段是用mysql自己的加密算法来进行加密的,而不是md5算法~了解了这些之后就明白我们可以通过sql语句来添加、修改和删除用户了,用sql来修改user表时要注意password这一字段的信息要用password()函数来加密~还有就是修改完用户表之后要记得用命令flush privileges来刷新权限列表。今天用update user set password=pasword("root")之后忘记用flush privileges来刷新就用新密码尝试重新登录,结果是密码错误的~因为还没有刷新修改,所以密码还是原来那个的~要修改user表必须要有对应的权限才可以的,一般是用root来修改吧~

  以上是用sql语句来修改user表来达到管理用户的效果,而mysql也自带了一些管理工具来管理用户的:

mysqladmin:在shell下进行密码修改的命令,用法是mysqladmin -u username -poldpassword

password newpassword因为这个命令是在shell下执行的,所以要确保有足够的权限连接上mysql

server才可以进行修改密码的,用这个命令修改密码时不用再加上password()函数来进行加密~

  还有两个是在mysql客户端进行用户管理的工具set password和grant ...identified by~使用set password语句,

mysql> set password for user@host password=password("password);

这语句也必须使用password()函数,但是不需要使用flush privileges语句。

使用grant语句

mysql> grant usage on dbname.tbname to user@host identified by "password";

这里password函数是不必要的,也不需要使用flush privilleges。

管理用户时也要注意给用户分配权限,可以对应某个数据库或某个表,权限有select,insert,update,delete,drop,create,alter,index这些都可以在mysql的user表下看到对应的字段,对应的赋值是y与n,默认是n也就是没权限,还有一些管理员权限的就不写出来了~还有两个用grant工具是用到的权限是all和usage,这是两个意思相反的权限,all是拥有全部权限,usage是只有连接进入mysql server的权限~

  今天修改密码时不知道密码还没flush privileges;以为是自己修改错误,就顺便学习忘记mysql密码时应该怎么办:

 mysql中文参考手册上的

1. 首先停止mysql server,可以用/etc/init.d/mysqld stop或者killall -TERM mysqld

你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。

2. 使用`--skip-grant-tables' 参数来启动 mysqld。 (LINUX下/X/bin/mysqld_safe

--skip-grant-tables , windows下X:\mysql\bin\mysqld.exe --skip-grant-tables)

3. 然后无密码登录到mysqld server ,

>use mysql

>update user set password=password("new_pass") where user="root";

>flush privileges;

。你也可以这样做:`mysqladmin -h hostname -u user password 'new password''。

4. 载入权限表: `mysqladmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH

PRIVILEGES'。

5.killall -TERM mysqld

6.用新密码登陆

mysql的备份与恢复:

  在本地备份表,用mysql客户端连接到mysql server后用select * from table into

outfile "filename";对应的恢复方法是load data infile "filename" [replace|ignore] into

table table_name;

  本地或者远程备份数据库或表mysqldump -h -u -p dbname.tablename >filename;对应的恢

复数据方法是:mysql -u -p dbname.tablename <filename;

  暂时先记下这些常用的mysql管理方法~

你可能感兴趣的:(mysql)