mysql常见操作

来源:互联网 发布:守望先锋公开队友数据 编辑:程序博客网 时间:2024/06/08 01:13

 


MySQL Weed

使用MySQL的过程中,收集的一些小知识。(2007.02.01最后更新)

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]添加一用户,使它拥有所有权限
mysql> grant all on mydb.* to myuser@"myhost" Identified by "mypassword";

[2]简单添加一用户
mysql> i nsert into mysql.user (host, user, password) values('%', 'NewUser', password('NewUserPwd'));
mysql> flush privileges;
注:最好使用grant命令。

启动/关闭MySQL服务器
/etc/rc.d/init.d/mysqld {start|stop|status|condrestart|restart}

导出/导入数据
导出:mysqldump -u root -p DATABASE_NAME > SQL_FILE_PATH
导入:mysql -u user -p DATABASE_NAME < SQL_FILE_PATH
注意:在导入数据库之前,需要在MySQL中新建一个名为DATABASE_NAME的空数据库。

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

使MySQL区分大小写
修改文件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";

查看表结构
mysql> describe TableName

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

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

SHOW
show character set -- 查看字符集
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程序调用存储过程,报权限不足
前提:数据库mydb中有存储过程myproc;MySQL用户myuser@localhost,拥有数据库mydb的所有权限(grant all on mydb.* to myuser);使用MySQL官方JDBC驱动(如mysql-connector-java-5.0.4.jar),在Java应用程序中调用myproc。
    在执行该Java应用程序时,可能出现如下问题:
    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 执行该存储过程的权限不足。但如果直接在MySQL客户端中使用 myuser@localhost 用户调用myproc,则没有任何权限问题。
    这其实是MySQL官方JDBC驱动的问题,因为JDBC驱动的代码中除了调用 myproc外,还做了其它操作。这就可能出现权限问题。可以有如下两种解决方法:
    [1]修改myproc的definer。虽然myuser已经拥有了mydb的所有权限,但由于JDBC驱动的问题,如果myproc的definer不是 myuser@localhost,那么该用户仍然无法执行存储过程。修改definer的值,使其为 myuser@localhost。
    [2]赋予 myuser@localhost对表mysql.proc的查询权限。在前面的错误提示( SELECT privilege on mysql.proc to parse column types )中已经表明了这一点,可以执行如下授权语句:grant select on mysql.proc to myuser@localhost。
    注:由于是MySQL JDBC驱动的问题,所以上述解决方法都不太好。所以在直接新建存储过程,或导入SQL文件(文件中包含创建存储过程的语句)使用的MySQL用户,最好与在Java应用程序中使用的MySQL用户保持一致。

updating...

CREATE TABLE T(
    A VARCHAR(10) BINARY
);