mysql常用命令及問題匯總

字號(hào):


    1、增加了密碼后的登錄格式如下: mysql -u root -p
    2、修改登錄密碼
    1) mysqladmin -u用戶名 -p舊密碼 password 新密碼
    例:mysqladmin -u root password 21century
    注:因?yàn)殚_始時(shí)root沒有密碼,所以-p舊密碼一項(xiàng)就可以省略了。
    2)直接修改user表的root用戶口令:
    mysql> user mysql;
    mysql> update user set pasword=password('21century') where user='root';
    mysql> flush privileges;
    注:flush privileges的意思是強(qiáng)制刷新內(nèi)存授權(quán)表,否則用的還是緩沖中的口令。
    3、測(cè)試密碼是否修改成功
    1)不用密碼登錄
    [root@test1 local]# mysql
    error 1045: access denied for user: ' (using password: no)
    顯示錯(cuò)誤,說明密碼已經(jīng)修改。
    2)用修改后的密碼登錄
    [root@test1 local]# mysql -u root -p
    enter password: (輸入修改后的密碼21century)
    welcome to the mysql monitor. commands end with ; or g.
    your mysql connection id is 177 to server version: 3.23.48
    type 'help;' or 'h' for help. type 'c' to clear the buffer.
    mysql>成功!
    這是通過mysqladmin命令修改口令,也可通過修改庫(kù)來(lái)更改口令
    4、啟動(dòng)和停止
    啟動(dòng):mysql從3.23.15版本開始作了改動(dòng),默認(rèn)安裝后服務(wù)要用mysql用戶來(lái)啟動(dòng),不允許root用戶啟動(dòng)。
    如果非要用root用戶來(lái)啟動(dòng),必須加上--user=root參數(shù)
    (./safe_mysqld --user=root &)
    停止:mysqladmin -u root -p shutdown
    5、導(dǎo)出meeting數(shù)據(jù)庫(kù):
    mysqldump -uroot -p21century meeting > db_meeting.sql 導(dǎo)人dbname數(shù)據(jù)庫(kù)
    mysqldump -uroot -p21century dbname < xxx.sql
    導(dǎo)入數(shù)據(jù)庫(kù)還可用類似于oracle中@my_script.sql的方式一次執(zhí)行大量sql語(yǔ)句,這在使用mysqldump不起作用時(shí)非常有用。
    例:#./mysql -uroot -p < /home/xuys/db_meeting_2003.sql (注:create database、use databasename、create table和insert into語(yǔ)句都可寫在上面的腳步文件中)
    6、給表改名 rename table ztemp to ztemp4;
    7、修改字段屬性 alter table bbabase change news_id id varchar(5) not null;
    8、在表中的content后增加一字段 alter table bbabase add leave_time datetime not null after content;
    9、增加用戶 grant select,update,insert on 數(shù)據(jù)庫(kù)名.* to 用戶名@登錄主機(jī) identified by 密碼
    例:grant select,update,insert,delete on *.* to identified by abc;
    10、只需本機(jī)使用mysql服務(wù),在啟動(dòng)時(shí)還可以加上--skip-networking參數(shù)使mysql不監(jiān)聽任何tcp/ip連接
    (./safe_mysqld --skip-networking &),增加安全性。(非常推薦)
    11、忘記root密碼怎么辦?
    在啟動(dòng)mysql服務(wù)器時(shí)加上參數(shù)--skip-grant-tables來(lái)跳過授權(quán)表的驗(yàn)證 (./safe_mysqld --skip-grant-tables &),這樣我們就可以直接登陸mysql服務(wù)器,
    然后再修改root用戶的口令,重啟mysql就可以用新口令登陸了。
    12、解決mysql不用用戶名和密碼可以直接登陸的問題:
    mysql>use mysql;
    mysql>delete from user where user='';
    mysql>flush privileges; (必須的)
    /////////////////////////////
    mysql1130錯(cuò)誤的解決方案
    在用遠(yuǎn)程連接mysql服務(wù)器的數(shù)據(jù)庫(kù),不管怎么弄都是連接不到,錯(cuò)誤代碼是1130,error 1130: host 10.0.0.1 is not allowed to connect to this mysql server
    猜想是無(wú)法給遠(yuǎn)程連接的用戶權(quán)限問題。
    結(jié)果這樣子操作mysql庫(kù),即可解決。
    在本機(jī)登入mysql后,更改 “mysql” 數(shù)據(jù)庫(kù)里的 “user” 表里的 “host” 項(xiàng),從”localhost”改稱'%'。。
    mysql -u root -p
    mysql&gt;use mysql;
    mysql&gt;select 'host' from user where user='root';
    mysql&gt;update user set host = '%' where user ='root';
    mysql&gt;flush privileges;
    mysql&gt;select 'host' from user where user='root';
    第一句是以權(quán)限用戶root登錄
    第二句:選擇mysql庫(kù)
    第三句:查看mysql庫(kù)中的user表的host值(即可進(jìn)行連接訪問的主機(jī)/ip名稱)
    第四句:修改host值(以通配符%的內(nèi)容增加主機(jī)/ip地址),當(dāng)然也可以直接增加ip地址
    第五句:刷新mysql的系統(tǒng)權(quán)限相關(guān)表
    第六句:再重新查看user表時(shí),有修改。。
    重起mysql服務(wù)即可完成。
    mysql 遇到 error 1044 (42000):access denied for user 的解決方案
    2011-05-05 11:51
    這個(gè)問題主要是因?yàn)槭跈?quán)用戶本身的權(quán)限不足引起的。我們以root用戶為例,需要注意到地方有以下幾個(gè)方面:
    1.mysql的user表很重要。必須保證root用戶在user表里面有兩條記錄,也就是
    root localhost ……..
    root 127.0.0.1 …….
    2.保證root用戶擁有所有權(quán)限,也就是user表里面的所有字段里面對(duì)應(yīng)的內(nèi)容是y
    3.在my.ini后者my.cnf里面有這個(gè)配置項(xiàng)的時(shí)候
    bind-address=localhost
    啟用這個(gè)配置項(xiàng)可以保證安全
    4.在服務(wù)器上運(yùn)行mysql的時(shí)候,為了安全起見,盡量不要給user表里面的host字段賦予%權(quán)限.
    保證以上幾點(diǎn)沒有問題的情況下,這個(gè)錯(cuò)誤基本可以避免
    另外如果用戶不能進(jìn)入mysql系統(tǒng),可以用這種方法進(jìn)入:
    如果 mysql 正在運(yùn)行,首先停止。
    啟動(dòng) mysql :bin/safe_mysqld --skip-grant-tables &
    就可以不需要密碼就進(jìn)入 mysql 了。
    然后就是
    >use mysql
    >update user set password=password(new_pass) where user=root;
    >flush privileges;