<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    John Jiang

    a cup of Java, cheers!
    https://github.com/johnshajiang/blog

       :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理 ::
      131 隨筆 :: 1 文章 :: 530 評論 :: 0 Trackbacks
    MySQL Weed
    使用MySQL的過程中,收集的一些小知識。(2007.09.04最后更新)

    簡單SQL語句
    創(chuàng)建/刪除數(shù)據(jù)庫
    CREATE DATABASE mydb
    CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

    DROP DATABASE mydb


    創(chuàng)建數(shù)據(jù)表
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tblname (
      colname1 coltype coloptions reference,
      colname2 coltype coloptions reference, ...
      [, index1, index2, ...])
    [ENGINE = MyISAM | InnoDB | HEAP]
    [DEFAULT CHARSET = csname [COLLATE = colname]]

    CREATE TABLE titles (
      titleID INT NOT NULL AUTO_INCREMENT,
      title VARCHAR(100) NOT NULL,
      subtitle VARCHAR(100),
      edition TINYINT,
      pubID INT,
      catID INT,
      langID INT,
      year INT,
      isbn VARCHAR(20),
      comment VARCHAR(255),
      ts TIMESTAMP,
      PRIMARY KEY (titleID),
      KEY pubIdIndex (pubID),
      KEY langID (langID),
      KEY catID (catID),
      KEY title (title),
      CONSTRAINT titles_ibfk_1 FOREIGN KEY (pubID)
        REFERENCES publishers (pubID),
      CONSTRAINT titles_ibfk_2 FOREIGN KEY (langID)
        REFERENCES publishers (langID),
      CONSTRAINT titles_ibfk_3 FOREIGN KEY (catID)
        REFERENCES categories (catID))
    ENGINE = InnoDB
    DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci

    CREATE TABLE table2 SELECT * FROM table1 where id <= 10;

    DROP TABLE mytitle


    創(chuàng)建/刪除索引
    CREATE INDEX idxTitle ON titles (title)
    ALTER TABLE titles ADD INDEX idxTitle (title)
    SHOW INDEX FROM tablename -- 列出數(shù)據(jù)表tablename的索引

    DROP INDEX indexname ON tablename

    ALTER TABLE titles ADD INDEX idxTitle (title(16))


    變更表結(jié)構(gòu)
    ALTER TABLE tablename ADD newcolumn coltype coloptions [FIRST | AFTER]

    ALTER TABLE tablename CHANGE oldcolname newcolumn coltype coloptions

    ALTER TABLE tablename DROP colname

    ALTER TABLE tblname ADD PRIMARY KEY (indexcols ...)
    ALTER TABLE tblname ADD INDEX [indexname] (indexcols ...)
    ALTER TABLE tblname ADD UNIQUE [indexname] (indexcols ...)
    ALTER TABLE tblname ADD FULLTEXT [indexname] (indexcols ...)

    ALTER TABLE tblname ADD FOREIGN KEY [idxname]
      (column1) REFERENCES table2 (column2)

    ALTER TABLE tblname DROP PRIMARY KEY
    ALTER TABLE tblname DROP INDEX indexname
    ALTER TABLE tblname DROP FOREIGN KEY indexname

    ALTER NAME tablename ENGIEN typename


    MySQL伴隨Linux啟動
    vi /etc/rc.d/rc.local
    加入語句:
    ./mysqld_safe --user=mysql &

    改變root用戶密碼
    mysql> update mysql.user set password=password('YourPwd') where user='root';
    mysql> flush privileges;

    增加新用戶
    [1]添加一用戶,使它擁有所有權(quán)限
    mysql> grant all on mydb.* to myuser@"myhost" Identified by "mypassword";

    [2]簡單添加一用戶
    mysql>
    insert into mysql.user (host, user, password) values('%', 'NewUser', password('NewUserPwd'));
    mysql> flush privileges;
    注:最好使用grant命令。

    刪除用戶
    mysql> drop user userName;

    啟動/關(guān)閉MySQL服務(wù)器
    啟動(Linux下): mysqld_safe -u mysql &
    關(guān)閉: mysqladmin -uUser -pPassword -hHost shutdown


    導(dǎo)出/導(dǎo)入數(shù)據(jù)
    導(dǎo)出:
    mysqldump -uUser -pPasswd
    -hHost -B DB_NAME > SQL_FILE_PATH  -- 將數(shù)據(jù)庫DB_NAME全部導(dǎo)出到SQL_FILE_PATH文件中
    mysqldump -uUser -pPassword -hHost DATABASE_NAME --tables TABLE_NAME > SQL_FILE_PATH  -- 將數(shù)據(jù)庫DB_NAME中的表TABLE_NAME導(dǎo)出

    導(dǎo)入:
    mysql -uUser -pPassword -hHost < SQL_FILE_PATH  -- 將數(shù)據(jù)文件導(dǎo)入MySQL服務(wù)器中。注:該文件中必須有建數(shù)據(jù)庫的語句。

    mysqldump -uUser -pPassword -hHost -B DB_NAME < SQL_FILE_PATH  -- 將數(shù)據(jù)文件導(dǎo)入MySQL服務(wù)器的DB_NAME數(shù)據(jù)庫中。注:該文件中沒有建數(shù)據(jù)庫的語句。

    注意:在導(dǎo)入數(shù)據(jù)庫之前,需要在MySQL中新建一個名為DATABASE_NAME的空數(shù)據(jù)庫。

    啟動日志
    修改mysql.ini/mysql.cnf文件,在[mysqld]后添加如下形式的語句。
    log="Absolte_Path_To_Log/sys.log"
    log-update="
    Absolte_Path_To_Log/ sys_update.log"

    使MySQL區(qū)分大小寫
    修改文件my.ini/my.cnf,在選項組[mysqld]之后添加
    lower_case_table_names=2

    修改某用戶的登錄密碼
    mysqladmin -uUser -pOldPasswd passwd NewPasswd
    mysql>update user set password=PASSWORD("NewPasswd") where user="myuser" and host="myhost";


    查看表結(jié)構(gòu)
    mysql> describe TableName

    修改表的字符集
    mysql> alter table tblName convert to character set charsetName

    修改表的表類型
    mysql> alter table tblName engine engineType

    SHOW
    show character set -- 查看字符集
    show collation
    show columns
    show create database
    show create procedure and show create function
    show create table
    show create view
    show databases
    show engine
    show engines
    show errors
    show grants
    show index
    show innodb status
    show logs
    show mutex status
    show open tables
    show privileges

    Java程序調(diào)用存儲過程,報權(quán)限不足

    前提:數(shù)據(jù)庫mydb中有存儲過程myproc;MySQL用戶myuser@localhost,擁有數(shù)據(jù)庫mydb的所有權(quán)限(grant all on mydb.* to myuser);使用MySQL官方JDBC驅(qū)動(如mysql-connector-java-5.0.4.jar),在Java應(yīng)用程序中調(diào)用myproc。
        在執(zhí)行該Java應(yīng)用程序時,可能出現(xiàn)如下問題:
        test_proc executed failed because : Driver requires declaration of procedure to either contain a '\nbegin' or '\n' to follow argument declaration, or SELECT privilege on mysql.proc to parse column types.
    這表示用戶
    myuser@localhost 執(zhí)行該存儲過程的權(quán)限不足。但如果直接在MySQL客戶端中使用 myuser@localhost 用戶調(diào)用myproc,則沒有任何權(quán)限問題。
        這其實是MySQL官方JDBC驅(qū)動的問題,因為JDBC驅(qū)動的代碼中除了調(diào)用 myproc外,還做了其它操作。這就可能出現(xiàn)權(quán)限問題。可以有如下兩種解決方法:
        [1]修改myproc的definer。雖然myuser已經(jīng)擁有了mydb的所有權(quán)限,但由于JDBC驅(qū)動的問題,如果myproc的definer不是
    myuser@localhost,那么該用戶仍然無法執(zhí)行存儲過程。修改definer的值,使其為 myuser@localhost。
        [2]賦予
    myuser@localhost對表mysql.proc的查詢權(quán)限。在前面的錯誤提示( SELECT privilege on mysql.proc to parse column types )中已經(jīng)表明了這一點,可以執(zhí)行如下授權(quán)語句:grant select on mysql.proc to myuser@localhost。
        注:由于是MySQL JDBC驅(qū)動的問題,所以上述解決方法都不太好。所以在直接新建存儲過程,或?qū)隨QL文件(文件中包含創(chuàng)建存儲過程的語句)使用的MySQL用戶,最好與在Java應(yīng)用程序中使用的MySQL用戶保持一致。

    updating...
    posted on 2006-08-12 09:19 John Jiang 閱讀(900) 評論(0)  編輯  收藏 所屬分類: Database 、MySQL
    主站蜘蛛池模板: 99re在线这里只有精品免费| 十八禁无码免费网站| 国产精品亚洲产品一区二区三区| 精品久久久久久国产免费了| 亚洲国产综合专区在线电影| 久久午夜免费视频| 免费福利资源站在线视频| 亚洲精品国产精品乱码在线观看| 在线观看免费人成视频色| 一区免费在线观看| 久久亚洲熟女cc98cm| 日本免费一区尤物| 久久爰www免费人成| 亚洲色精品三区二区一区| 中文字幕久久亚洲一区| 在线观看免费人成视频| 在线观看免费视频网站色| 亚洲人成电影网站免费| 久久久久久亚洲精品| 国产jizzjizz免费看jizz| 1000部啪啪毛片免费看| 国产美女视频免费观看的网站 | 亚洲乱亚洲乱淫久久| 四虎影视永久免费观看网址| 99热这里只有精品6免费| 免费人成再在线观看网站 | 亚洲AV成人精品日韩一区18p| 最近中文字幕国语免费完整| caoporm超免费公开视频| 亚洲精品永久在线观看| 337p日本欧洲亚洲大胆色噜噜 | 亚洲性无码一区二区三区| 久久香蕉国产线看观看亚洲片| 免费在线观看日韩| 希望影院高清免费观看视频| 久久黄色免费网站| 日韩精品无码免费专区网站 | 九九热久久免费视频| 老子影院午夜伦不卡亚洲| 亚洲三级在线观看| 亚洲人成毛片线播放|