本地登录
liuqunying# mysql -h 127.0.0.1 -u用户名 -p用户密码 [-Pmysqlport;#默认为3306,也可以单独指定] 如,mysql运行在我当前使用的机器上:
mysql -h127.0.0.1 -uqunyingliu -p51cto20140824
远程登录
liuqunying# mysql -h主机IP或主机名 -u用户名 -p用户密码 [-Pmysqlport;#默认为3306,也可以单独指定] 如,mysql服务运行在远程服务器上:
mysql -h 10.1.8.24 -u qunyingliu -p 51cto20140824
非标准端口登录
非3306服务端口登录,例如:
mysql -u qunyingliu -p 51cto20140824 -P 3307
mysql -h 10.1.8.24 -u qunyingliu -p 51cto20140824 -P 3307
B.通过socket链接mysql服务
mysql -S mysql.sock文件地址 例如,
mysql -S /tmp/mysql/mysql.sock 当然如前所述,以下两种登录方式,默认也是通过unix连接mysql服务的:
mysql
mysql -P 3307 -u qunyingliu -p51cto20140824
mysql -h localhost -P 3307 -u qunyingliu -p51cto20140824
如果通过socket方式连接mysql,当mysql.sock文件不是默认的名称或存放路径时,我们将会收到类似如下错误信息:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
2.Mysql常用交互命令
Databases(数据库)相关操作
show databases; 显示数据库
create database name; 创建数据库
use databasename; 选择数据库,屏幕提示:Database changed
drop database name 直接删除数据库,无提示
mysqladmin drop databasename 删除数据库前,有提示。
Tables(数据表)相关操作
show tables; 显示表
create table 表名(字段列表);创建数据库里面一个表格
命令:create table degree double(16,2));
describe(desc) tablename; 显示具体的表结构
desc 表名,或者show columns from 表名
insert into 表名;插入表数据
命令:insert into [( [,.. ])] values ( 值1 )[,
( 值n )]
如,往表'person'中插入两条记录:小光,男,31岁,汉族;小明,男,15岁,白族
mysql> insert into person values ('小光','男','31岁','汉族'),('小明','男','15岁','白族');
select from 表名;
查询所有记录:select * from person;
查询前2条记录:select * from person by name limit 0,2;
delete from 表名;删除表数据
命令:delete from 表名 where 表达式
例如,mysql> delete from person where name='小明';
删除表所有数据,mysql> delete * from person;
update 表名 set 字段=新值,… where 条件;修改表中数据
例如,mysql> update person set age=30 where name='小光';
alter table 表名 add字段 类型 其他;在表中增加字段
例如:在表person中添加了一个字段single(是否单身的意思),类型为char(1),默认值为n
mysql> use xian;alter table person add single char(1) default 'n'
或 alter table dbname add column userid int(11) not null primary key
auto_increment;
更改表名:
alter table 原表名称 rename 修改后表的名称;
rename table 原表名 to 新表名;
rename table person to hunliantongjibiao;
更新字段内容
update 表名 set 字段名 = 新内容
update 表名 set 字段名 = replace(字段名,'旧内容','新内容');
更新生日从0824为20140824:
update birthday set birthday=concat('2014',birthday);
通过文本方式往数据库里面导入数据:load data local infile 'filepath' into table 表名;
mysql> LOAD DATA LOCAL INFILE "/data/appdatas/jiayuanvip.txt" INTO TABLE person;
truncate table 表名;清空表数据,表的记录计数重置
drop table 表名;删除表,无提示
Users(用户权限)相关操作
授权:
grant 权限 on databases.tables to username> 如,
mysql> grant insert,select,update on mysql.* to qunyingliu identified by '51cto20140824'mysql> GRANT ALL PRIVILEGES ON *.* qunyingliu@localhostIDENTIFIED BY '51cto20140824' WITH GRANT OPTION;mysql> GRANT ALL PRIVILEGES ON *.* qunyingliu@"%" IDENTIFIED BY '51cto20140824' WITH GRANT OPTION; 第一个*表示所有的数据库,第二个*表示所有的表,identified by 后面的是登录用的密码,可以省略,即缺省密码或者空密码。
取消授权:
revoke all privileges(权限) on *(数据库).*(表) from 帐号@主机;
如,
mysql>revove all privileges on *.* from qunyingliu@"%"; 删除用户:
delete from user where user="帐号" and host="%";
如,
delete from user where user="qunyingliu" and host="%"; 数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。
全局管理MySQL用户权限:
file: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。
查看 MySQL 用户权限
查看当前用户(自己)权限: show grants;
查看其他 MySQL 用户权限: show grants for qunyingliu@10.2.122.1;
mysql服务相关操作
查看mysql版本与当前时间:
select version(),current_date;
修改密码:
update user set password=password("liuqunying") where user='qunyingliu'; flush privileges(刷新权限)