Solaris / OpenSolaris 下使用 MySQL 的问题汇总
Solaris下安装MySQL
1. 下载MySQL
下载页面:http://dev.mysql.com/downloads/mysql/5.0.html#downloads
选择对应的Solaris版本
2. 解包MySQL
转到下载目录
# gunzip –d mysql-standard-5.0.27-solaris10-x86_64.pkg.gz
3. 创建mysql的用户组和用户
# groupadd mysql
# useradd –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里的root权限的,所以一般用户无法更改密码,除非请求管理员。方法一
使用phpmyadmin,这是最简单的了,修改mysql库的user表,
不过别忘了使用PASSWORD函数。方法二
使用mysqladmin,这是前面声明的一个特例。
mysqladmin –u root –p password mypasswd
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
把命令里的root改为你的用户名,你就可以改你自己的密码了。
当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,
那么这种方法就是无效的。
而且mysqladmin无法把密码清空。
下面的方法都在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。方法六
使用GRANT … IDENTIFIED BY语句
mysql> GRANT USAGE ON *.* TO ‘paul’@”%” IDENTIFIED BY ‘mypassword’;
这里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 –p3.打开数据库:use dbname;
显示所有数据库:show databases;
显示数据库mysql中所有的表:先use mysql;然后show tables;
显示表的列信息:describe user;(显示表mysql数据库中user表的信息);4.创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ‘something’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ‘something’ 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 bankaccount.*
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 customer (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.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql –u root –p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:wcnc_db.sql
Thanks for the review! I want to say — thank you for this!
[Reply]