由于项目的需要,我也开始接触mysql 了,命令真是多呵呵,当然会遇到很多问题,在此一点点的记录下来,并一点点的深入,即是分享也是记忆,希望共勉!
1.安装
首先的问题当然是安装啦我图简单,就使用了yum install mysql ,登录的时候,貌似说服务没有开,sock文件错误,可是mysqld服务也没有找到,没想到只有一个客户端,于是网上找一下,
$ yum list mysql*
$ yum install mysql-server
就这样一小心的安装完了
2.修改配置文件
暂时修改一下编码(添加在密码下方添加): default-character-set = utf8#vi /etc/my.cnf
# chkconfig –list mysqld ← 确认MySQL自启动mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 如果2–5为on的状态就OK
select user,host from mysql.user; ← 查看用户信息
3.启动mysql服务,并设定为系统服务:
# chkconfig mysqld on ← 设置MySQL服务随系统启动自启动#service mysqld start ←启动服务(# /etc/rc.d/init.d/mysqld start也可以)
4.修改密码
$ mysql -uroot -p进去,密码为空(默认),于是修改之
select user,host,password from mysql.user; ← 查看用户信息
set password for root@localhost=password(‘在这里填入root密码’); ← 设置root密码
select user,host,password from mysql.user; ← 查看用户信息
exit ← 退出MySQL服务器
然后再重新登录
5.删除匿名用户:
$ delete from mysql.user where user=”; ← 删除匿名用户
$ select user,host from mysql.user; ← 查看用户信息
6.当前版本信息,日期和数据库:
$ select version(),current_date;$ show databases; ← 查看系统已存在的数据库
mysql查看打开的端口: show variables like ‘port’;
drop database test; ← 删除名为test的空数据库
show databases; ← 查看系统已存在的数据库
7.添加用户与开启远程登录
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数 据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
$ grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";
或者:
$ grant all on *.* to user1@"%" identified by "your password";
如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。如果你不想user1有密码,可以再打一个命令将密码去掉。
$ grant select,insert,update,delete on mydb.* to user1@localhost identified by "";
这个可以参考:http://www.cnblogs.com/good_hans/archive/2010/03/29/1700046.html
8.删除用户权限
revoke:只删除了用户权限,但没有删除这个用户mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| xbb | localhost |
| root | wangxg |
+------------------+-----------+
mysql> revoke insert,update,delete,select ON *.* from 'xbb'@'localhost' IDENTIFIED BY '123';
mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| xbb | localhost |
| root | wangxg |
+------------------+-----------+
查看用户权限(部分参考:http://xuebinbin212.blog.163.com/blog/static/11216737620111175130898/)
mysql> show grants for xbb@localhost;
注:drop user:删除了整个用户及其权限(包括数据字典中的数据)
9.mysql 中sql代码的注释
两种注释:
单行注释 ,用 # 开头的,该行后面的为注释
多行注释, /* */ ,以/*开头 ,*/ 结尾 为注释
还有一种注释,这个跟版本有一些关系 ,这个可以参考一下网上资料
10.mysql 大小写的敏感规则
1、Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;
2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1)、数据库名与表名是严格区分大小写的;
2)、表的别名是严格区分大小写的;
3)、列名与列的别名在所有的情况下均是忽略大小写的;
4)、变量名也是严格区分大小写的;
5)MySQL在Windows下都不区分大小写。
如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:
A、创建时设置:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
B、使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
C、mysql table editor中直接勾选BINARY项。
11.字符集问题
毕竟是中国人,习惯用自己的语言。用 show create table 表名 ; 查看表的创建
查看字符集:mysql> SHOW CHARACTER SET; A.在mysql中只要是gb2312,gbk,utf8等支持多字节编码的字符集都可以储存汉字,当然,gb2312中的汉字数量远少于gbk,而gb2312,gbk等都可在utf8下编码。因此,要想数据表中能储存中文只需数据表的字符集按需任选一种可存储汉字的既可。 B.要保证显示的字符集与数据库存储字符集一致,才不会出现乱码12.查看数据库版本信息
A.[testg@login ~]$ mysql -Vmysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
B.mysql> status; ------------------------------------------------------------- mysql Ver 14.14 Distrib 5.5.23, for Linux (i686) using readline 5.1
........................
C.mysql> select version(); +-----------+ | version() | +-----------+ | 5.5.23 | +-----------+ 1 row in set (0.00 sec)
13.修改表属性
插入数据: INSERT INTO [表名] (字段1,字段2) VALUES (100,\'51WINDOWS.NET\')
删除数据: DELETE FROM [表名] WHERE [字段名]>100
更新数据: UPDATE [表名] SET [字段1] = 200,[字段2] = \'51WINDOWS.NET\' WHERE [字段三] = \'HAIWA\'
新增字段: ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL
删除字段: ALTER TABLE [表名] DROP COLUMN [字段名]
修改字段: ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL
重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表) sp_rename \'表名\', \'新表名\', \'OBJECT\'
新建约束: ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= \'2000-1-1\')
删除约束: ALTER TABLE [表名] DROP CONSTRAINT 约束名
新建默认值 ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT \'51WINDOWS.NET\' FOR [字段名]
删除默认值 ALTER TABLE [表名] DROP CONSTRAINT 默认值名
参考:http://hi.baidu.com/shenjiedong888/item/eebbe48be73631ce99255f26