【IT168 服务器学院】初次在机器上安装Mysql时,你可以匿名访问数据库或者以不带口令的root身份进入数据库.
这一事实说明初始的安装是不安全的.作为管理员首先应该做的是为root用户设置口令并删除匿名用户.
1.如何设置密码
密码可以是空或非空,但不允许用通配符。一个空密码不意味着匹配任何字母或数字,它意味着用户必须不指定密码。
在Mysql中密码以一个加密过的值存储,不是一个字面上的文本。
如果你在Password列中存储一个照字面上的密码,用户将不能连接!
GRANT语句和mysqladmin password命令为你自动加密口令,但是如果你用诸如INSERT、REPLACE、UPDATE等命令,
一定要用PASSWORD("your password")而不是简单的"your password"来指定口令。
如
Grant all on samp_db.* to user@localhost indentified by "your password"
mysqladmin -u root password "your password"
或者在Mysql库中执行语句
update user set password=password("your password") where user="root"
flush privileges
2.如何删除和添加用户
这很简单,你只要在Mysql数据库中的用户授权表中使用delete和insert语句
如
delete from user where user=""
insert into user values("localhost","user",password("your password"),
"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y")
注意:在执行以上语句后,你都必须告诉服务器重载授权表内容,否则它不起作用.
你可以发一条FLUSH PRIVILEGES或执行mysqladmin flush-privileges.
(或如果你有一个不支持flush-privileges的老版本,用mysqladmin reload。)
另外你还可以通过运行下列命令检查你是否需要告诉服务器重载授权表:mysqladmin -u root status.
删除匿名用户并为root用户设置口令后,虽然增加了安全,但每次连接数据库都必须指定主机名,用户名及口令等参数.
这样一来运行这个程序需要很多输入工作,很快就会让人厌烦(特别我按键速度又太慢).
现在好了,自版本3.22以来,Mysql允许在一个选项文件中存储连接参数.
这样就不再需要重复输入这些参数了.但你需曾经在命令行上输入过它们后才可以使用.
接下来我们来看一下如何创建此类文件.
<1>.在linux环境下,你可以在/etc下编辑my.cnf文件.选项文件是一个无格式的文本文件,
因此可以用任何文本编辑器来创建它.文件内容如下所示为了防止别人读取它,
你可以加上chmod 600 my.cnf)
[client]
host=serverhost
user=yourname
password=your password
<2>.在windows环境下,选项文件的内容是相同的,其存放位置在C:my.cnf.
当然你还可以在linux下用alias命令设置别名.编辑root/.bashrc文件,
在其中加入语句alias samp_db=''mysql -h host -u user -pyourpassword''
(保存以后别忘了bash重启).另外在windows下,你可以编一个批处理文件samp_db.bat,
在其中写入mysql -h host -u user -pyourpassword.以后只要打入samp_db就能进入Mysql.是不是很方便!
[更新密码]:
use mysql
update user set password=password ("youpassword")
where user="root";
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
在密码不知道的情况下修改密码!
无论用什么方法,杀掉mysqld的进程,然后用下边这个方法启动mysqld。
2. 使用`--skip-grant-tables'' 参数来启动 mysqld。
然后登录到mysql里去修改密码。
先确认已经杀掉mysqld进程了,然后执行这个
/usr/bin/safe_mysqld --skip-grant-tables &
再这样登录
mysql -h 192.168.1.2 -u root