Linux
下
Mysql
基本操作(二)
登录
mysql以及修改mysql登录密码(命令不要直接复制去试,半角圆角等等的问题可能会造成命令错误,最好照着敲,这样应该就不会出错)
1.登录
我们一般都是root用户登录,所以一般修改root用户密码,这里顺便提一下登录命令。
常规:mysql -u root -p然后输入密码登录即可,这里默认mysql服务器是localhost。
你可以试着这样登录:mysql -h 127.0.0.1 -u root -p然后输入密码登录:
这样的话你就应该能猜到-h的作用了,host,选择你的mysql服务器。
假设我们能够ping通你的开发板并且你的开发板上装有mysql,我们是不是可以在虚拟机上远程操作你的开发板上的mysql?答案是:
2.添加用户以及修改密码
(1)方法1:
我称它为改表法,不同版本命令稍有差别。
use mysql;
update user set password=password(‘1234’) where user=’root’;
(注意单引号,而且不要直接复制该命令去用,照着输入,该单引号与mysql中的不同)
flush privileges;
(刷新数据库别忘了)
当你了解对表的增删查改命令后你就会明白这是对mysql数据库下的user表进行的有条件的改变,其实严格来说是更新update,毕竟改变和更新的意思还是有差别的(嗯?又偏题了!),OK,这里说明一下,后面我们提到的改变其实就是更新,毕竟“增删改查”这样叫起来好记一些,而且这不是抠字眼,这是严谨。好了,言归正传,上面提到的改变,改变了什么,将user表下的字段名为user的内容为root的password字段的内容改为了1234,了解表操作之后这一个命令应该不难理解。
这里还说明了一个问题,说明mysql这个数据库是mysql这个客户端系统级的数据库,里面的内容不要随意去动,更不要不小心去删掉了这个数据库,后面建自己的数据库的时候不要用mysql这个名字。
既然知道了mysql数据库里面有一个user表,不随意动,那我看看总可以吧,OK,我们去看看,下面这个是两种版本的mysql数据库下的user表的截图:
我们之前看到的查看版本以及显示表结构的命令这里就派上用场了:
显然,两种数据库的user表的内容是不同的,我们仔细看一下不难发现,第一个user表里面有password字段,而第二个user表虽然有password相关的字段,但是其字段显然不是password,所以上面说的修改mysql用户密码的命令显然起不到作用。那么这么修改呐,我们先去看下user表的具体内容:
Host,user,password字段很明显,password那一行应该可以看到一长串加密数字*23AE809DDACAF96AF0FD78ED04B6A265E05AA257。(加密?是不是可以解密?现在是不是想到那些大片里面的黑客,黑进服务器用解密软件解密然后转移资金、数据等等的画面了,原来那些令人惊叹的手段是这样来实现的,嘿嘿嘿。。。)
看的我眼晕,但是host和user字段能看到,看到最后似乎可以看到一个加密的长串数字*23AE809DDACAF96AF0FD78ED04B6A265E05AA257,哎?这里加密数字和上面一样!我设置的密码都是一样的,那么说明了什么,说明了下面这个加密数字对应的字段就是密码字段,那么进而我们改密码的命令中只要把password改成该字段名不就可以了?字段名,authentication_string,那么改密码的命令:
update user set authentication_string=authentication_string(‘1234’) where user=’root’;
ERROR 1305 (42000): FUNCTION mysql.authentication_string does not exist
结果发生错误,大意应该就是mysql没有authentication_string这个功能。
搜索了一下,原来是这个命令不对,应该是
update user set authentication_string=password(‘1234’) where user=’root’;
(傻啊,前面是字段名,怎么把人家后面password命令也给改成字段名了,难怪提示没有这个功能,以手扶额中。。。,password是对密码进行加密的函数,不使用该函数,在数据库中显示出来的密码就是明文)
最后总结一下命令:
(1)改表法(mysql数据库下的user表)
use mysql;
update user set password=password(‘1234’) where user=’root’;
或者update user set authentication_string=password(‘1234’) where user=’root’;
flush privileges;
(2)set法
set password for 用户名@localhost = password('新密码');
(3)mysqladmin法
mysqladmin -u用户名 -p旧密码 password 新密码;
(4)skip法(这个方法适用于你忘记密码无法正常登陆的时候)
/etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables &
然后利用改表法进行密码设置就可以了。
其实,这些东西你可以在mysql官网和mysql客户端上都能找到,前提是你英语能力不能太差,或者你能耐住性子慢慢翻译英语原文。
下面是一些快捷方式:
这是一些帮助说明:
这是mysql的数据类型:
这是mysql官网的一些内容,有说明文档、mysql使用工具、版本管理以及相关开发语言的接口函数说明等: