启动和停止mysql
最基本启动器和停止工具是mysql的bin里面的mysqld,该工具是二进制的,语法为mysqld start或者mysqld stop。如果使用service mysqld start或者bin里面的mysqld_safe启动,本质都是调用了mysqld,只是加了一些其他的处理。
创建和删除用户
grant all privileges on *.* to it@"%" identified by "itpwd" with grant option;
grant all privileges on *.* to it@"localhost" identified by "itpwd" with grant option;
据说执行第一条就能任意主机访问了,但是我得执行上面两条才生效。
删除比较简单,drop user it;
修正:mysql8以后有改动
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; mysql> flush privileges;
建表详细语句
CREATE TABLE `topic` (
`TopicId` int(50) NOT NULL auto_increment,
`Topic_BoardId` int(10) NOT NULL,
`Topic_StudentId` int(10) NOT NULL,
`TopicTitle` varchar(1000) NOT NULL,
`TopicContent` varchar(6000) NOT NULL,
`TopicSendTime` varchar(30) NOT NULL,
PRIMARY KEY (`TopicId`),
FOREIGN KEY (`Topic_BoardId`) REFERENCES `board` (`BoardId`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`Topic_StudentId`) REFERENCES `student` (`StudentId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
修改密码
mysqladmin -u root -p password 123456
会提示输入旧密码
导出数据
全库导出
mysqldump -uxxx -pxxx -B dbname > xxx.sql
只导出表结构
mysqldump -uxxx -pxxx -d dbname tablename > xxx.sql
只导出表数据(一个insert)
mysqldump -uxxx -pxxx -t dbname tablename > xxx.sql
只导出表数据(多个insert)
mysqldump -uxxx -pxxx --skip-extended-insert -t dbname tablename > xxx.sql
只导表结构和数据
mysqldump -uxxx -pxxx dbname tablename > xxx.sql
一次导出多个数据库
mysqldump -uxxx -pxxx --databases db1 db2 db3 > xxx.sql
注意:linux下执行这个语句,需要OS的root权限。有时候想用sudo来实现,但是sudo后只让输入一次密码,搞不懂该算是OS的root密码还是mysql的root密码,总之会失败。可以先用sudo执行一条其他的OS语句,输入OS的root密码后root状态会保持一段时间,这段时间内直接执行mysqladmin -u root -p password 123456就行了。
导出csv
select * from table1
INTO OUTFILE 'c:/xxx.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '/n'
导入csv
LOAD DATA INFILE 'data.txt' INTO TABLE table2
FIELDS TERMINATED BY ',';
;
补充:
cmd下,每次登陆后use xxx和set names xxx很不爽吧
mysql -uxxx -p -h 127.0.0.1 --default-character-set=gbk -D dbName
系统编码参数繁多,担忧default-character-set不等于set names从而导致提交数据乱码?
常规登陆后show variables like 'character%';
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /wls/data/mysql/my3306/share/charsets/ |
+--------------------------+----------------------------------------+
set names=gbk后
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /wls/data/mysql/my3306/share/charsets/ |
+--------------------------+----------------------------------------+
登陆时候直接--default-character-set=gbk,完全等价于set names.