• Solaris / OpenSolaris 下使用 MySQL 的问题汇总

    Date: 2008.05.29 | Category: Sun | Tags: ,,,

    Solaris下安装MySQL

    1. 下载MySQL
    下载页面:http://dev.mysql.com/downloads/mysql/5.0.html#downloads
    选择对应的Sola­ris版本
    2. 解包MySQL
    转到下载目录
    # gun­zip –d mysql-standard-5.0.27-solaris10-x86_64.pkg.gz
    3. 创建mysql的用户组和用户
    # grou­padd mysql
    # use­radd –G mysql mysql
    4. 使用pkgadd安装MySQL包
    # pkgadd –d mysql-standard-5.0.27-solaris10-x86_64.pkg
    安装后的MySQL位于/opt/mysql/mysql目录下
    5. 在目录/etc下创建文件my.cnf文件,内容如下
    [mysqld]
    basedir=/opt/mysql/mysql
    datadir=/opt/mysql/mysql/data
    6. 运行MySQL的post-install文件,创建数据库repository
    # cd /opt/mysql/mysql
    # ./scripts/mysql_install_db –defaults-file=/etc/my.cnf –user=mysql
    7. 启动MySQL
    # cd /opt/mysql/mysql
    # ./bin/mysqld_safe –defaults-file=/etc/my.cnf –user=mysql
    也可以使用如下的方法来启动MySQL
    # /etc/init.d/mysql start
    8. 更改MySQL root用户的口令
    # /opt/mysql/mysql/bin/mysqladmin –u root password ‘new-password’
    # /opt/mysql/mysql/bin/mysqladmin –u root –h 机器名称 password ‘new-password’

    9. 登录MySQL命令行
    # mysql –p
    输入新的密码
    9. 停止MySQL
    # /etc/init.d/mysql stop

    MySQL修改密码方法
    首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,所以一般用户无法更改密码,除非请求管理员。
    方法一
    使用phpmyadmin,这是最简单的了,修改mysql库的user表,
    不过别忘了使用PASSWORD函数。
    方法二
    使用mysqla­dmin,这是前面声明的一个特例。
    mysqla­dmin –u root –p password mypa­sswd
    输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
    把命令里的root改为你的用户名,你就可以改你自己的密码了。
    当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,
    那么这种方法就是无效的。
    而且mysqla­dmin无法把密码清空。
    下面的方法都在mysql提示符下使用,且必须有mysql的root权限:
    方法三
    mysql> INSERT INTO mysql.user (Host,User,Password)
    VALUES(‘%’,‘paul’,PASSWORD(‘mypassword’));
    mysql> FLUSH PRIVILEGES
    确切地说这是在增加一个用户,用户名为paul,密码为mypassword。
    注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES
    方法四
    和方法三一样,只是使用了REPLACE语句
    mysql> REPLACE INTO mysql.user (Host,User,Password)
    VALUES(‘%’,‘paul’,PASSWORD(‘mypassword’));
    mysql> FLUSH PRIVILEGES
    方法五
    使用SET PASSWORD语句,
    mysql> SET PASSWORD FOR ‘paul’@”%” = PASSWORD(‘mypassword’);
    你也必须使用PASSWORD()函数,
    但是不需要使用FLUSH PRIVILEGES
    方法六
    使用GRANTIDENTIFIED BY语句
    mysql> GRANT USAGE ON *.* TO ‘paul’@”%” IDENTIFIED BY ‘mypa­ssword’;
    这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES
    注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。

    mysql技巧总结

    1.修改mysql中root的密码:
    shell>mysql –u root –p
    mysql>SET PASSWORD FOR root=PASSWORD(“root”);

    2.远程登录mysql server:(当然server必须首先给某个远程用户授权了)
    shell>mysql –h host –u user –p

    3.打开数据库:use dbname;
    显示所有数据库:show data­ba­ses;
    显示数据库mysql中所有的表:先use mysql;然后show tables;
    显示表的列信息:desc­ribe user;(显示表mysql数据库中user表的信息);

    4.创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
    GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ‘some­thing’ WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ‘some­thing’ WITH GRANT OPTION;

    5.删除授权:
    REVOKE ALL PRIVILEGES ON *.* FROM root@”%”;
    USE mysql;
    DELETE FROM user WHERE User=“root” and Host=”%”;
    FLUSH PRIVILEGES;

    6. 创建一个用户custom在特定客户端weiqiong.com登录,可访问特定数据库bankaccount
    mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON ban­ka­ccount.*
    TO custom@weiqiong.com IDENTIFIED BY ‘stupid’;

    7.重命名表:
    ALTER TABLE t1 RENAME t2;

    为了改变列a,从INTEGER改为TINYINT NOT NULL(名字一样),
    并且改变列b,从CHAR(10)改为CHAR(20),同时重命名它,从b改为c:
    ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

    增加一个新TIMESTAMP列,名为d:
    ALTER TABLE t2 ADD d TIMESTAMP;

    在列d上增加一个索引,并且使列a为主键:
    ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);

    删除列c:
    ALTER TABLE t2 DROP COLUMN c;

    增加一个新的AUTO_INCREMENT整数列,命名为c:
    ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX ©;
    注意,我们索引了c,因为AUTO_INCREMENT柱必须被索引,并且另外我们声明c为NOT NULL
    因为索引了的列不能是NULL

    8.删除记录:
    DELETE FROM t1 WHERE C>10;

    6.改变某几行:
    UPDATE t1 SET user=weiqiong,password=weiqiong;

    7.使用name列的头10个字符创建一个索引:
    CREATE INDEX part_of_name ON custo­mer (name(10));

    MySQL导出导入命令的用例

    1.导出整个数据库

    mysqldump –u 用户名 –p 数据库名 > 导出的文件名

    mysqldump –u wcnc –p smgp_apps_wcnc > wcnc.sql

    2.导出一个表

    mysqldump –u 用户名 –p 数据库名 表名> 导出的文件名

    mysqldump –u wcnc –p smgp_apps_wcnc users> wcnc_users.sql

    3.导出一个数据库结构

    mysqldump –u wcnc –p –d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql

    –d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

    4.导入数据库

    常用sou­rce 命令

    进入mysql数据库控制台,

    如mysql –u root –p

    mysql>use 数据库

    然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

    mysql>source d:wcnc_db.sql

    • Share/Bookmark