MySQL数据库应用
连接数据库:
$ mysql -h hostname -u username -p
Enter password:(输入该用户密码)
查看数据库:
SHOW DATABASES;
创建数据库:
CREATE DATABASE db_name;
删除数据库:
DROP DATABASE db_name;
数据库授权:
GRANT ALL PRIVILEGES ON blogs_mcucode.* TO mcucode@localhost;
将数据库blogs_mcucode的所有表(*)的所有权限(ALL PRIVILEGES),赋予用户mcucode@localhost.
取消授权:
REVOKE ALL PRIVILEGES ON blogs_mcucode.* FROM 'username'@'localhost';
查看当前数据库中的数据表:
SHOW TABLES;
新建数据表:
CREATE TABLE pet(
name VARCHAR(20),
owner VARCHAR(20),
species VARCHAR(20),
sex CHAR(1),
birth DATE,
death DATE);
新建数据表:
指定ID为主键,并且自动递增。
CREATE TABLE users (
id int(4) NOT NULL AUTO_INCREMENT,
username varchar(20) NOT NULL,
password varchar(64),
PRIMARY KEY (`id`)
);
删除数据表:
DROP TABLE pet;
清空数据表:
TRUNCATE TABLE mytable;
重名名数据表
RENAME TABLE old_name to new_name;
查看数据表字段:
DESCRIBE pet;
增加字段
ALTER TABLE tb_name ADD age INT, ADD address VARCHAR(11);
删除字段
ALTER TABLE tb_name DROP COLUMN age, DROP COLUMN address;
修改字段类型
ALTER TABLE tb_name MODIFY age VARCHAR(10);
修改字段名称(必须重新指定该字段的类型)
ALTER TABLE tb_name CHANGE age ages INT;
调整id字段放在第1列:
ALTER TABLE tb_name MODIFY id INT FIRST;
调整password字段在username字段之后:
ALTER TABLE tb_name MODIFY password VARCHAR(20) AFTER username;
增加自增ID字段:
ALTER TABLE tb_name ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
重建自增ID方法: 删除重新建立该字段;
新建带密码用户:
CREATE USER 'username' IDENTIFIED BY 'password';
新建不带密码用户:
CREATE USER 'username'
或者直接对用户数据库操作:
INSERT INTO
mysql.user (host,user,password)
values("localhost","username",password("123456"));
查看用户:
SELECT user,host,password FROM mysql.user;
删除用户:
DROP USER user1 [, user2];
修改用户密码(mysql命令):
SET PASSWORD [FOR username]=PASSWORD("123456");
注意事项:
1.不带[FOR ....]参数表示修改自己的密码;
2.必须用函数PASSWORD对密码进行加密;
3.管理员修改普通用户密码后需执行刷新权限操作;
修改用户密码(系统命令):
$mysqladmin -u username -p password(newpasswd)
Enter password: (输入原始密码即可)
刷新权限
FLUSH PRIVILEGES;
部分操作完成后,需要刷新权限才生效(具体命令列表待续)
1.管理员用户更改普通用户密码;
数据库导入
# mysql -u root -p dbname<dbdata.sql
Enter password:(输入该用户密码)
数据库导出
# mysqldump -u root -p dbname>dbdata.sql
Enter password:(输入该用户密码)
数据表导入CVS数据
load data infile '/var/files.csv'
into table ids
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\r\n';
数据表导出CVS数据
SELECT * FROM test_info
INTO OUTFILE '/tmp/test.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
命令说明:
(1)字段之间以逗号分隔;
(2)字符串以半角双引号包围
(3)字符串本身的双引号用两个双引号表示
(4)数据行之间以\r\n分隔;
从文件中加载数据(类似于CVS)
LOAD DATA LOCAL INFILE '/path/pet.txt'
INTO TABLE pet LINES TERMINATED BY '\r\n';
删除前缀相同的数据表
数据库名称database_name,前缀boblog;
SELECT CONCAT('DROP TABLE', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_schema = 'database_name' AND table_name LIKE 'boblog%';
这样会生成一条删除语句,复制后执行即可;
文章摘要:
本文描述Mysql数据库存实现外网访问的方法,
设置外网访问数据库: 基于安全考虑,一般不建议数据库外网直连,但既然有此功能,所以在一定场合,还是很有用的。
1.修改配置文件
$sudo vim /etc/mysql/my.cnf
把bind-address参数的值改成你的内/外网IP或0.0.0.0,或者直接注释掉这行.
2.更新host
$mysql -u root -p
mysql> use mysql;
mysql> select user,host from user;
mysql> update user set host='%' where user='dachun';
mysql> flush privileges;
这里重点在host='%'这里
3.授权用户
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dachun'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> flush privileges;
4.修改iptables允许数据库端口(3306)
#iptables -A INPUT -p tcp --dport 3306 -j ACCEPT