MySQL用户管理

1. 用户添加及分配权限

1)登录mysql

#mysql  -uroot –p

 2)添加用户

 mysql> user mysql   //使用mysql数据库

mysql> grant all on *.* to zhangchuan@”%” identified by “123” ;

 (执行完会在mysql.user表插入一条记录,all表示所有权限(包括增 删 改 查

等权限); *.* 表示所有数据库,zhangchuan为添加的用户名,123为密码,

%为匹配的所有主机,上面的信息都可以指定如grant select,update on db.* to

zhangchuan @localhost identified by ‘123″;)

mysql> flush privileges;  //刷新系统权限表

3)修改用户

mysql> update user set user=’mysqladminqwe’ where user=’root’;

mysql> flush privileges;

4)删除用户

mysql> delete from mysql.user where user =’zhangchuan’ ;

mysql> flush privileges;

注:执行完sql语句后必须执行 flush privileges才可生效

2. 密码修改:

1)使用mysqladmin命令

# mysqladmin -u root password oldpass “newpass”

2)登录mysql客户端操作mysql.user

#mysql –u root

mysql> user mysql

mysql> UPDATE user SET Password = PASSWORD(‘newpass’) WHERE user = ‘root’;

mysql> flush privileges;

3. 忘记密码

1) 停止mysql服务

# /etc/init.d/mysqld stop

或: service mysqld stop

2)进入mysql的bin目录执行以下操作

# cd /usr/local/mysql/bin

# ./mysqld_safe –user=mysql –skip-grant-tables –skip-networking &

3)进入mysql客户端修改密码

# mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD(‘newpassword’)

where USER=’root’;

mysql> FLUSH PRIVILEGES;

mysql> quit

4)启动mysql服务登录

# /etc/init.d/mysql restart

# mysql -uroot -p

Enter password: <输入新设的密码newpassword>

4. 开放外网权限

上面已经说过,可以使用grant命令,不过我遇到使用grant开放权限后,使用本地客户端却连接不上。

解决方法如下:

1)检查3306端口是否开放给指定IP

使用nestat命令查看3306端口状态:

~# netstat -an | grep 3306

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

若出现以上结果表示3306端口只是在IP 127.0.0.1上监听,所以拒绝了其他IP的访问。

 2)修改/etc/mysql/my.cnf文件。打开文件,找到下面内容:

# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

bind-address = 127.0.0.1

把上面这一行注释掉或者把127.0.0.1换成合适的IP,建议注释掉。

重新启动后,重新使用netstat检测:

~# netstat -an | grep 3306

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN

PHP实现导入大SQL文件

对于mysql的大量数据导入导出,直接在服务器上使用命令,会很方便快捷,但是有时候我们不能总结直接调用命令来实现,此时我们可以使用一个脚本语言作为调用这个命令的中介,这里我是用的是php里面的system函数。

system使用说明:
string system ( string $command [, int &$return_var ] )

command: 执行的命令
return_var: 如果return_var存在,则为执行命令完后返回的结果
函数返回的结果为命令输出的最后一行。

举例:


所以如果需要通过php导入大数据,可以使用:


Dbhost 改为您的数据库服务器地址
Dbuser 改为您的数据库用户名
Password 改为您的数据库用户密码
Dbname 改为您的数据库名
backup.sql 导入的sql文件

3.在浏览器里面访问mysql.php即可完成导入,同理如果需要导出sql语句也可以使用system命令来完成,其执行的时间相对比较快。

 

vim常用命令总结

 

1. 退出

:w — 保存

:q — 退出

:wq — 保存退出(也可以使用:x或ZZ)

(加上!表示强制执行,如:q!表示强制退出)

2. 移动光标

hjkl — 分别表示←↓↑→(J比较类似于↓)

:n — 移动到第n行 (比如:1表示移动到第1行,可以使用:set nu显示行号)

0 — 将光标移动到当前行首(^表示将光标移动到除空格外的第一个字母处)

$ — 将光标移动到当前行尾

gg — 将光标移动到第一行

G — 将光标移动到本文章的末尾

nG — 将光标移动到第n行

w — 移动到下一个单词开头

e — 移动到下一个单词结尾

HML — 分别表示将光标移动到屏幕的顶端,中间,底端

Ctrl+f — 向前滚动一页

Ctrl+b — 向后滚动一页

3. 复制/粘贴/剪切

yy — 复制当前行

nyy — 复制从当前行起往下n行

p — 粘贴到当前行下一行

P — 粘贴到当前行上一行

dd — 剪切当前行(可作为删除使用)

ndd — 剪切从当前行起往下n行(可作为删除使用)

:1,100 co 200 — 将1到100行的内容复制到第200行

:1,100 co $ — 将1到100行的内容复制到文章尾

4. 删除

dw — 删除一个单词(即从光标位置起到下一个空格为止的内容)

x — 向后删除一个字符(nx表示向后删除n个字符)

d0 — 删除光标处到当前行首的内容

dG — 删除光标处到当前行尾的内容

5. 编辑/撤销

i — 在光标处插入内容

u — 撤销上次操作

6. 查找

/: — 后面加上查找的内容,表示向文章往下查找

?: — 后面加上查找的内容,表示向文章往上查找

n — 向下重复查找

N — 向上重复查找

7. 替换

:s/from/to — 替换当前行中第一个from为to

:s/from/to/g — 替换当前行中所有from为to

:%s/from/to/g — 替换文章中所有from为to

:100,200s/from/to/g — 替换文档中100到200行中from为to