逍遥一派 发表于 2015-1-16 20:12:57

绝无经由的MySQL的暗码设置

人们常说“成功孕育成功”,这种说法明显非常适合MySQL的情况。MySQL学习教程这个开源数据库号称在全世界有超过110万份的完全安装。择要:本文先容了怎样修正一个用户的暗码,你可使用三种办法,GRANT语句、SETPASSWord语句、间接修正受权表和利用办理工具MySQLadmin。一个主要的使用就是怎样在忘记root用户暗码的时分修正暗码,利用的办法是启动MySQL服务器时疏忽加载受权表。
由MySQL利用用户名和口令的办法与Unix或Windows利用的体例有良多分歧的地方:
・MySQL利用于认证目标的用户名,与Unix用户名(登录名字)或Windows用户名有关。缺省地,年夜多半MySQL客户实验利用以后Unix用户名作为MySQL用户名登录,可是这仅仅为了便利。客户程序同意用-u或--user选项指定一个分歧的名字,这意味着不管怎样你不克不及使得一个数据库更平安,除非一切的MySQL用户名都有口令。任何人能够试图用任何名字毗连服务器,并且假如他们指定了没有口令的任何名字,他们将乐成。
・MySQL用户名最长能够是16各字符;典范地,Unix用户名限定为8个字符。
・MySQL口令与Unix口令不妨。在你利用登录到一台Unix呆板口令和你利用在那台呆板上存取一个数据库的口令之间没有需要有联系关系。
・MySQL加密口令利用了一个Unix登录时代所用的分歧算法。
本节将先容怎样为MySQL数据库体系的用户修正暗码。
利用myadmin有用程序
利用mysqladmin有用程序修正暗码的命令行是:
shell>mysqladmin-uuser-ppassword"newpassword"
运转这个命令,在提醒输出暗码时,数据就暗码,则用户user的暗码就被改成newpassword
。假如,本来的用户没有暗码,则不比指定-p选项。比方,初始化受权表以后,root用户的暗码就是空的,你能够如许为root用户设立暗码:
shell>mysqladmin-urootpassword"newpassword"
利用语句SETPASSWORD
利用mysqladmin为用户修正暗码有一个分明的弱点,就是必需晓得用户本来的暗码,假如是为了给忘记了暗码的用户重设暗码就力所不及了。一个专门用于修正暗码的SQL语句为SETPASSWORD:
・SETPASSWORD=PASSWORD(somepassword)
设置以后用户的口令。任何非匿名的用户能改动他本人的口令!
毗连到服务器后,你能够如许改动本人的暗码:
mysql>SETPASSWORD=PASSWORD(anotherpass);
・SETPASSWORDFORuser=PASSWORD(somepassword)
设置以后服务器主机上的一个特定用户的口令。只要具有存取mysql数据库的用户能够如许做。用户应当以user@hostname格局给出,这里user和hostname完整与他们列在mysql.user表条目标User和Host列一样。比方,假如你有一个条目其User和Host字段是bob和%.loc.gov,你将写成:
mysql>SETPASSWORDFORbob@"%.loc.gov"=PASSWORD("newpass");
间接修正受权表
另外一种修正,暗码的办法是间接修正受权表user。只要具有存取mysql数据库的用户能够如许做。
比方,假如你有一个条目其User和Host字段是bob和%.loc.gov,你将写成:
mysql>UPDATEmysql.userSETpassword=PASSWORD("newpass")whereuser="bobANDhost="%.loc.gov";
mysql>FLUSHPRIVILEGES;

从头设置一个忘记的root口令
假如你忘记了root用户的口令,那末将会是一件十分贫苦的事。除非你有别的有特权的用户,不然良多操纵都没法完成,比方,封闭数据库等等。
你应该选用--without-grant-tables选项启动mysqld服务,你能够在这时候变动受权表的相干内容,也能够用mysqlaccess反省你的受权是不是到位。
比方,假如你健忘了你的MYSQL的root口令的话,你能够经由过程上面的历程恢复。
1、封闭MySQL服务器
向mysqldserver发送kill命令关失落mysqldserver(不是kill-9),寄存历程ID的文件一般在MYSQL的数据库地点的目次中。
kill`cat/mysql-data-directory/hostname.pid`
你必需是UNIX的root用户大概是你所运转的SERVER上的一律用户,才干实行这个操纵。
假如在windows平台上,也能够中断历程。假如是NT还能够用netstopmysql命令封闭数据库。
2、利用--skip-grant-tables参数来启动mysqld。
Unix平台:
$sumysql
$safe_mysqld--skip-grant-tables&
Windows平台:
C:mysqlin>mysqld--skip-grant-tables
以上语句,假建都位于准确的目次。
3、毗连到服务器,修正口令
利用mysql-hhostnamemysql命令登录到mysqldserver,用grant命令改动口令:

mysql>GRANTALLON*.*TOroot@localhostINDENTIFIEDBYnewpassword
->WITHGRANTOPTION;
mysql>GRANTALLON*.*TOroot@%INDENTIFIEDBYnewpassword
->WITHGRANTOPTION;

(假如存在一个能从恣意地点登录的root用户,初始化受权表后,天生该用户,为了平安,你大概已删除该用户)。
实在也能够间接修正受权表:
mysql>usemysql;
mysql>updateusersetpassword=password(yourpass)whereuser=root;

你大概利用工具mysqladmin修正暗码:
shell>mysqladmin-hhostname-urootpasswordnewpassword
可是它修正的暗码语服务器婚配的用户有关。假如,你从服务器主机毗连,那末服务器婚配的是root@localhost,修正该用户暗码,不然一样平常修正root@%暗码,除非你有别的root用户存在。
4.载进权限表:
shell>mysqladmin-hhostnameflush-privileges
大概利用SQL命令`FLUSHPRIVILEGES。
固然,在这里,你也能够重启mysqld。
DBaaS并不意味着解决方案提供者要让自己失业。与其他系统一样,在实施DBaaS解决方案时,客户可能需要部署、迁移、支持、异地备份、系统集成和灾难恢复等方面的帮助。

老尸 发表于 2015-1-18 18:47:59

一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)

乐观 发表于 2015-1-27 11:03:20

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。

冷月葬花魂 发表于 2015-2-5 10:23:22

发几份SQL课件,以飨阅者

若相依 发表于 2015-2-11 09:33:35

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

只想知道 发表于 2015-3-11 03:40:32

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

莫相离 发表于 2015-3-17 20:10:37

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。

爱飞 发表于 2015-3-25 01:14:15

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
页: [1]
查看完整版本: 绝无经由的MySQL的暗码设置