1、MySQL初始化root密码
/usr/bin/mysqladmin -u root password qwe123
然后使用 mysql -uroot -p
输入密码后可以登录。
2、赋予访问权限
//进入MySQL服务器
2 d:\mysql\bin\>mysql -h localhost -u root
3 //赋予任何主机访问数据的权限
4 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'qwe123' WITH GRANT OPTION;
5 //使修改生效
6 mysql>FLUSH PRIVILEGES
3、导出数据库
mysqldump -uxxx -pxxx --default-character-set=utf8 databasename [tablename] > a.sql
只导出表结构:
mysqldump --opt -d 数据库名 -u root -p > xxx.sql
只导出数据:
mysqldump -t 数据库名 -uroot -p > xxx.sql
导出某个表:
mysqldump -uroot -p -B数据库名 --table 表名 > xxx.sql
导出某个表部分数据:
mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径
4、导入数据库
mysql> use database;
mysql> source /root/桌面/nconf1029v1.sql
#mysql 数据库名 < 文件名
5、乱码问题
1. 数据库表中字段的字符集设置 。show create table TableName 或 show full columns from tableName
2 当前联接系统参数 show variables like 'char%'
数据库连接串中指定字符集
URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk
用alter语句. 如果数据库已经有数据表了, 那每个表都要修改. (修改数据库的字符集不会改变原有数据表的字符集)
utf8:
ALTER DATABASE `数据库` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE `数据表` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
gbk (包含gb2312):
ALTER DATABASE `数据库` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
ALTER TABLE `数据表` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
实际中有可能填入的数据就不是utf8,比如脚本执行的通常都是latin1的,这个时候尽管转码也还是会出现乱码,就必须写入的时候写入utf8才可以。
GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
仍有问:使用source x.sql导入后,用工具打开是乱码,检查不到什么错误。但使用工具导入,则不出乱码。
6,修改密码
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
7,无法登录
Mysql中添加用户之后可能出现登录时提示ERROR 1045 (28000): Access denied for user的错误.删除user.user中值为NULL的,或更新NULL为test 1)delete from user where user is NULL 2)update user set user=‘test‘ where user is NULL.
我使用如下两句话后,数据库变正常。
delete from user where user = '';
delete from user where Password = '';
之后重新赋予权限就可以了。
8,查看结构
mysql> show create table ConfigClasses;
desc ConfigClasses;
9,mysql数据库应用之删除表中所有数据但不删除表结构
mysql 删除表中所有数据,但不删除表结构。这个问题在项目中碰到,想要清空数据库内容,但是不能删除表结构,表面上这个问题是很简单的,针对每个表清空即可。但是实际中,当项目的数据库中存在的表数量较多的时候,就不那么容易了,于是我们想出使用存储过程来实现。
准备一个存储过程,我要删除的数据库是icinga,要删除别的可以替换,等会使用CREATE PROCEDURE clear()
BEGIN
DECLARE done INT DEFAULT 0; #游标的标志位
DECLARE name varchar(50);
DECLARE cmd varchar(150);
DECLARE tb_name CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema='icinga';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN tb_name;
REPEAT
FETCH tb_name INTO name;
IF NOT done THEN
#set cmd=concat('Delete from ',DB_NAME,'.','`',`name`,'`');
set cmd=concat('TRUNCATE table ','icinga','.','`',`name`,'`'); # 拼删除命令
SET @E=cmd;
PREPARE stmt FROM @E;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
UNTIL done END REPEAT;
CLOSE tb_name;
END;
然后登录mysqlmysql -h 10.1.70.41 -uroot -p
mysql>delimiter // #以//作为分割,默认的是;
mysql>复制上面的procedure过来
mysql>//
然后创建成功。mysql>use icinga
mysql>call clear
就调用了。最后调整回来间隔;
mysql>delimiter ;
10 创建数据库时候指定编码
UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
mysql 编码可以去看my.ini里面有很多配置。