给root设定密码
$mysqladmin -uroot -password newpassword
#设定用户root的密码为newpassword,此方法不安全!!!明文密码回留在shell中
$mysql -uroot #使用MySQL控制台修改密码
mysql> SET password=PASSWORD('newpassword');
MySQL -uroot -p;输入密码后成功登录;
创建一个数据库abc
create database abc;
显示所有数据库 : show databases;
数据库创建 : Create database db_name;
数据库删除 : Drop database db_name; 删除时可先判断是否存在,写成 : drop database if exits db_name
——————赋予远程权限——————
grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456';
上面的语句表示将 discuz 数据库的所有权限授权给 ted 这个用户,允许 ted 用户在 123.123.123.123 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456 。
下面逐一分析所有的参数:
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
discuz.* 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
ted 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
123.123.123.123 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
123456 为用户的密码。
执行了上面的语句后,再执行下面的语句,方可立即生效。
> flush privileges;
————————连接远程数据库——————
连接到远程主机上的MYSQL
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
备份数据库:
(1). mysqldump -u username -p database_name > FILE.sql
(2). 回车
(3). 提示输入密码
(4). 输入密码,回车.
导入数据库(1):
导入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
导入数据库(2):
还原:
mysql -hlocalhost -uroot -p密码 数据库名称 < 文件名称.sql
退出:
mysql>EXIT //退出MySQL服务器
删除不安全用户
# 删除所有非root用户
mysql> use mysql;
mysql> DELETE FROM user WHERE user != 'root';
# 删除从localhost以外的任何主机的登录
mysql> DELETE FROM user WHERE host != 'localhost';
mysql> SELECT user, host, password From user;
Mysql 常用语句
链接Mysql
$mysql -uroot -p //链接到本机上的Mysql,最好不要在-p后直接输入密码
Enter password: //因为密码可能悲ps命令或通过命令历史记录看到
$mysql -h1.1.1.1 -uroot -p //链接到IP地址为1.1.1.1的远程主机上的Mysql
# u与root之间可以不用加空格,其它也一样
修改密码
# 直接修改user表
mysql> user mysql;
mysql> UPDATE user SET password = password('21century') WHERE user='root';
mysql> FLUSH PRIVILEGES;
// flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令。
管理用户
#增加用户
# 格式: grant <privilege> on <object> to <user> [identified by 'password'] [with grant option];
# <privilege>有alter,create,delete,drop,index,inset,select,lock tables,update,all
# <object>为 databasename.table 如foo.* *.*
# 后面[]内的可选, with grant option 只会用于创建二级管理员
#例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO test1@"%" IDENTIFIED BY 'abc';
#例2、增加一个用户test2密码为abc,只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的权限,无密码
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO test2@localhost;
revoke <a_privilege> on <an_object> from <a_user> //与grant命令格式极其相似
#删除用户
mysql> use mysql;
mysql> DELETE FROM user WHERE user = "foo"
mysql> FLUSH PRIVILEGES;
#查看所有用户
mysql> SELECT USER,HOST,PASSWORD FROM mysql.user;
显示命令
mysql> show databases; //显示数据库列表
mysql> use mysql; //显示库中的数据表
mysql> show tables;
mysql> describe tables; //显示数据表的结构
mysql> select database(); //显示当前数据库
mysql> select user(); //显示当前用户
库和表最基本的创建和删除
mysql> show databases; // 显示数据库
mysql> create database db; // 创建数据库
mysql> drop database db; // 删除数据库
mysql> use db; // 选择数据库
mysql> create table mytable(字段设定列表); // 创建表
mysql> rename table mytable to mytable2; // 修改表名
mysql> drop table mytable; // 删除表
mysql> show tables; // 显示表的内容
mysql> describe mytables; // 显示表的结构
查询和更新
mysql> select * from database.table; //查询数据库database表table里的所有内容
mysql> select user,host,password from mysql.user; //查看所有用户
mysql> insert into mytable values(' ',' ',' '); //插入一条记录
mysql> delete from mytable where name='summer'; //删除一条记录
mysql> update mytable set sex='m' where name='summer'; //修改一条记录
mysql> alter table yourtable add name varchar(20); //在表中增加一条字段
mysql> alter table yourtable drop name ; //在表中删除一个字段
一个建库和建表以及插入数据的实例
mysql> drop database if exists school; //如果存在SCHOOL则删除
mysql> create database school; //建立库SCHOOL
mysql> use school; //打开库SCHOOL
mysql> create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
);
// 建表结束
// init(3)将ID设为长度为3的数字字段;auto_increment让它每个记录自动加一;not null不能为空primary key设为主字段
// 将name设为长度为10 的字符字段
// 将address设为长度50 的字符字段,且缺省值为深圳
// 将year设为日期字段
# 以下为插入字段
mysql> insert into teacher values('','glchengang','深圳一中','1976-10-10');
mysql> insert into teacher values('','jack','深圳一中','1975-12-23');
# 可将上面的命令原样写入到school.sql
mysql -uroot -p < schlool.sql
# 如果成功,空出一行无任何显示;如有错误,会有提示。
参考:
mysql备份恢复mysqldump.exe几个常用用例
https://bbs.zephyrxt.com/forum.php?mod=viewthread&tid=4721
MYSQL主从同步方案
https://bbs.zephyrxt.com/forum.php?mod=viewthread&tid=4681
Mysql 常用命令 添加删除用户
https://bbs.zephyrxt.com/forum.php?mod=viewthread&tid=4675
Linux环境下 php+mysql远程连接数据库,开启3306端口
https://bbs.zephyrxt.com/forum.php?mod=viewthread&tid=4668
MySql 新建用户,新建数据库,用户授权,删除用户,修改密码
https://bbs.zephyrxt.com/forum.php?mod=viewthread&tid=4671
mysql 基本命令(含高级用法)
https://bbs.zephyrxt.com/forum.php?mod=viewthread&tid=4672
linux下mysql备份Shell
https://bbs.zephyrxt.com/forum.php?mod=viewthread&tid=4187