mysql相关文章收集

http://ricoss.com/2009/05/mysql-begin.html

http://www.chinaunix.net/jh/17/647534.html

http://www.dwww.cn/news/2007-10/200710191711245801.shtml

 

 

要想从命令行启动mysqld服务器,你应当启动控制台窗口(或“DOS window”)并输入命令:

C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld

根据系统中MySQL安装位置的不同,前面的例子中使用的路径也不同。

在非NT版本的Windows中,在后台启动mysqld。也就是,服务器启动后,你应当可以看见后面的命令提示。如果你用该方法在Windows NT、2000、XP或2003中启动服务器,服务器则在前台运行,在服务器退出前,不会出现命令提示。因此,当服务器运行时,应当打开另一个控制台窗口来运行客户端程序。

下述命令可以停止MySQL服务器:

C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root shutdown

该命令调用MySQL管理工具mysqladmin连接服务器并告知它关闭服务。该命令使用MySQL root用户连接,这是MySQL权限系统中的默认管理账户。请注意MySQL权限系统中的用户完全独立于Windows下的登录用户。

如果mysqld不能启动,检查错误日志看看服务器是否写入了显示问题原因的任何消息。错误日志位于C:\Program Files\MySQL\MySQL Server 5.1\data目录中。是带后缀.err的文件。还可以尝试将服务器启动为mysqld --console;此时,可以从窗口中获得一些有用的信息,可以帮助解决问题。

最后选项是用--standalone --debug启动mysqld。此时,mysqld 写入日志文件C:\mysqld.trace,应当包含mysqld不启动的原因。

使用mysqld --verbose --help显示mysqld的所有选项。

 

 

 

MySql数据库是中小型网站后台数据库的首选,因为它对非商业应用是免费的.网站开发者可以搭建一个"Linux+Apache+PHP+MySql" 平台,这是一个最省钱的高效平台.在使用MySql进行开发时,MySql自带的文档对于新手来说是份很好的参考资料.本文是我在使用MySql中的小小心得。
当前一般用户的开发环境多是Windows或Linux,用户可以到http://www.mysql.com下载相关版本进行安装,在 windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqld start"命令,注意启动者应具有管理员权限。
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD('newpassword') where User='root';
如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令:
mysql -uroot -p;
mysql -uroot -pnewpassword;
mysql mydb -uroot -p;
mysql mydb -uroot -pnewpassword;
上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的数据库的名称。
在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by "password" ;
grant usage on *.* to NewUserName@HostName identified by "password";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表添加的用户,Password字段应用PASSWORD 函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用REVOKE操作。
下面给出本人从其它资料(www.cn-java.com)获得的对常用权限的解释:
全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。

最后给出本人在RedHat9.0下的MySql操作演示:
选用数据库的root用户登录
[weiwen@weiwenlinux]$mysql -uroot -p
Enter password:MyPassword
mysql>create database mydb;
Query OK, 1 row affected (0.02 sec)
mysql>use mydb;
Database changed
mysql>create table TestTable(Id int aut_increment primary key,
UserName varchar(16) not null,
Address varchar(255));
Query OK, 0 rows affected (0.02 sec)
mysql>grant all on mydb.* to test@localhost identified by "test";
Query OK, 0 rows affected (0.01 sec)
mysql>quit
Bye
[weiwen@weiwenlinux]$mysql mydb -utest -ptest

其中test.sql是用vi编辑好的SQL脚本,其内容为:
Insert into TestTable(UserName,Address)values('Tom','shanghai');
Insert into TestTable(UserName,Address)values('John','beijing');
select * from TestTable;
运行已经编辑好的SQL脚本可以用source filename 或 . filename。
以上只是对新手的简单练习,要成为一个数据库好手,当以孜孜不倦地追求知识,不断地思考、尝试、再思考。

 

 

 

 

 

只是linux下mysql编译安装的和常用命令的笔记, 作一下分享.

mysql 5.0.67的编译安装
1. 添加用户mysql, 如果不存在.

2. 解压mysql源码包, 可以先查看configure选项含义:
# ./configure –help
常用的安装选项如:
# ./configure –prefix=/opt/mysql-5.0.67-bin –with-charset=utf8 –with-collation=utf8_general_ci –with-extra-charsets=latin1
接着
# make
# make install

另外提几个configure选项:
–enable-thread-safe-client   // 编译线程安全版的客户端库
–without-debug   //关闭debug功能
–localstatedir=/home/mysql/data  //设定数据库文件目录

为了便于使用, 可以把mysql的bin目录加到path环境变量中.

接着拷贝my.cnf:
# cp support-files/my-medium.cnf /etc/my.cnf
对于my.cnf各项的含义, 可参考My.cnf配置选项, 该文摘自<MySQL5权威指南 3rd>.

接着
# mysql_install_db –user=mysql // 初始化数据库
# mysqld_safe –user=mysql &  //启动mysql

3. 设置随机自动运行
用编辑器打开/etc/rc.local文件,在exit 0前面加上,/opt/mysql-5.0.67-bin/bin/mysqld_safe –user=mysql &

4. 创建数据库, 添加用户
# mysql -uroot -p123456 #登录数据库
建立数据库mydb:
mysql> create database mydb;
添加用户rico:
mysql> GRANT ALL PRIVILEGES ON mydb.* TO rico@localhost IDENTIFIED BY ‘123456′ WITH GRANT OPTION;
grant  all  on  数据库名.*   to   用户名@localhost  identified  by  ‘密码’;
说明:
(1)grant all PRIVILEGES 赋予所有的权限, 只增删改查, 可为SELECT,INSERT,DELETE,UPDATE
(2)mydb.* 数据库mydb中所有的表,
(3)newuser 用户名
(4)@localhost 在本地电脑上的 mysql server 服务器, @”%”为添加任何机器都能登录的用户
(5)identfified by ‘password’ 设置密码

碰到的一个错误
ERROR 1045 (28000): Access denied for user mailto:'ser=mydb'@'localhost' (using password: YES)
有三种方法解决, 参考(http://blog.csdn.net/seared2008/archive/2007/08/22/1754874.aspx)
(注意, 如果using password: NO, 可能加上-p选项, 输入密码就可以了).
我做方法1解决了这个问题. 先关闭数据库, 再不验证方式重新启动:
# mysqld_safe -umysql –skip-grant-tables –skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
重新正常启动.

mysql常用命令
# /etc/rc.d/init.d/mysqld status  # 查看mysql server是否启动
# /etc/rc.d/init.d/mysqld start # 启动mysql server, 还有stop/restart
# mysqld_safe –user=mysql &   # 启动MySQL
# mysqladmin -uroot -p shutdown   # 关闭MySQL, 会提示输入密码; -p后可直接带密码, 无空格分隔
# mysqladmin -uroot -p password 1234 # 修改密码, 会提示输入密码; -p后可直接带密码, 无空格分隔
# mysqladmin -u root reload # 重新载入经认证的用户和口令的列表, 可以确保修改密码生效, 如果这个命令显示一个错误信息无法访问, 这可能是新的口令已经生效了. 或者可以加上选项-p.
# mysqladmin -u root -p status #查看mysql服务器当前状态
# mysql -hlocalhost -P3306 -uroot -p # 登陆本机mysql、root为用户名, -u后可以有空格, -p后有空格, 或不输入密码, 会提示输密码. 这样的好处是密码不会被history显示出来, 比较安全

mysql> create database mydb;   # 新建一个名为mydb的数据库
mysql> drop database mydb;  #删除一个名为mydb的数据库
mysql> GRANT ALL PRIVILEGES ON mydb.* TO rico@localhost IDENTIFIED BY ‘123456′ WITH GRANT OPTION;   # grant  all  on  数据库名.*   to   用户名@localhost  identified  by  ‘密码’;
# 也可这样修改密码, 两步:
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
# 删除用户, 下面两步:
mysql> Delete FROM user Where User=”xxxxx” and Host=”localhost”;
mysql> flush privileges;

# mysqldump -uroot -p -all -database > /home/backup/backup.sql  # 备份全部数据库到backup.sql文件
# mysqldump -uroot -p mydb > /home/backup/backup.sql  # 备份mydb数据库到backup.sql文件
mysql> use /home/backup/backup.sql;   # 导入/home/backup/目录的backup.sql数据库
# mysql -urico -p123456 dbtest < /opt/test.sql #执行脚本

MySQL中show命令抄录如下:
a. show tables或show tables from database_name; — 显示当前数据库中所有表的名称。
b. show databases; — 显示mysql中所有数据库的名称。
c. show columns from table_name from database_name; 或show columns from database_name.table_name; — 显示表中列名称。
d. show grants for user_name; — 显示一个用户的权限,显示结果类似于grant 命令。
e. show index from table_name; — 显示表的索引。
f. show status; — 显示一些系统特定资源的信息,例如,正在运行的线程数量。
g. show variables; — 显示系统变量的名称和值。
h. show processlist; — 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
i. show table status; — 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。
j. show privileges; — 显示服务器所支持的不同权限。
k. show create database database_name; — 显示create database 语句是否能够创建指定的数据库。
l. show create table table_name; — 显示create database 语句是否能够创建指定的数据库。
m. show engies; — 显示安装以后可用的存储引擎和默认引擎。
n. show innodb status; — 显示innoDB存储引擎的状态。
o. show logs; — 显示BDB存储引擎的日志。
p. show warnings; — 显示最后一个执行的语句所产生的错误、警告和通知。
q. show errors; — 只显示最后一个执行语句所产生的错误。
r. show [storage] engines; –显示安装后的可用存储引擎和默认引擎。

 

posted on 2009-06-20 12:38  周伟  阅读(195)  评论(0编辑  收藏  举报

导航