mysql常用操作

来源:互联网 发布:水杉软件 编辑:程序博客网 时间:2024/05/09 16:21

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

 

4、导入数据库

 mysql> use database;

mysql> source /root/桌面/nconf1029v1.sql

 

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 = '';

之后重新赋予权限就可以了。

7,查看结构

mysql> show create table ConfigClasses;

desc ConfigClasses;

 

7,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;

然后登录mysql
mysql -h 10.1.70.41 -uroot -p

mysql>delimiter // #以//作为分割,默认的是;

mysql>复制上面的procedure过来

mysql>//

然后创建成功。

mysql>use icinga

mysql>call clear

就调用了。最后调整回来间隔;

mysql>delimiter ;