Mysql开发使用实用笔记

1、MYSQL命令相关

以指定参数启动mysql数据库

--datadir=数据库目录

--basedir=mysql主目录

--defaults-file=指定启动所用配置文件,如my.cnf,默认使用/etc/my.cnf


Mysql 导出查询结果到文件 -N 去除表头 FIELDS TERMINATED BY ''  以指定分隔符隔开 

  mysql -h mysqlhost -u mysql_user -p -Ne 'select user_name from user' userdb > filepath

select * from my_table where name="geqiandebei"  into outfilefilename fields terminated by '|';" 


创建用户: create user '用户名'@'主机' IDENTIFIED BY '密码';

权限分配:GRANT ALL ON * TO '用户名'@'主机' ;  最高权限

GRANT  SELECT,UPDATE,INSERT,DELETE ON 数据库名.表名 TO '用户名'@'主机' ;

flush privileges; 刷新数据库使配置生效。


导出数据库数据

mysqldump -u用户名 -p 密码 数据库名 >test.sql


触发器使用

create trigger 触发器名字 时间[BEFORE AFTE] 事件[DELETE UPDATE INSERT] ON 表名字

FOR EACH ROW

BEGIN

 SQL语句

END;

删除出发器 DROP TRIGGER 触发器名字 ;



2、常见使用及编程问题:

一、MySql Error Code: 2006 – MySQL 服务器已离线  原因:数据库连接已断开,默认一个连接在8小时(28800秒)中未被使用的时候Mysql将其释放。
①建议修改MYSQL参数
max_allowed_packet=100M 
interactive_timeout=28800000
wait_timeout=28800000
②完善代码,在执行查询语句之前先用mysql_ping()检查连接,如果连接已失效则重连,用此方法就算重启了数据库,程序也不用重启
初始化的时候:
mysql_init() ...
mysql_real_connect()...
char value = 1;
mysql_options(&my_connection, MYSQL_OPT_RECONNECT, (char *)&value);
执行语句的时候:
mysql_ping(&my_connection);
mysql_reslt_local = mysql_query(&my_connection, mysql_tmp_local );

二、编码问题
①修改数据库编码
配置文件/etc/my.cnf 中 [mysqld] 增加 default-character-set=utf8 
②命令行操作,执行 show variables like 'characer%'; 查看编码

set character_set_client=utf8 设置对应编码

③设置忽略大小写

配置文件/etc/my.cnf 中 [mysqld] 增加 lower_case_table_names=1  (1忽略大小写 0 不忽略)

④代码控制
初始化连接时,设置默认编码,C语言写入mysql数据时需要设置写入时的编码

mysql_query(&my_connection,"set names gbk");

ret = mysql_set_character_set(mysql, "utf8");  // 推荐使用,重连时仍可保持设置生效

三、其他问题

① 删除数据库时报 “MYSQL删除数据库报 ERROR 1010 (HY000): Error dropping database (can't rmdir ...”

找到MYSQL数据库目录,删除数据库对应的文件夹,Linux下默认在 /var/lib/mysql/ 

②重装后启动Mysql提示“解决Linux下MySQL启动错误Starting MySQL.Manager of pid-file quit without updating file.[FAILED]”

建议参考:http://zhangge.net/4225.html

问题可能是之前版本的文件和现在版本有冲突之类的,本人只是为了重装,试了很多办法没解决后,直接卸载MYSQL后,手动删掉MYSQL的所有文件,然后重装解决。不禁觉得这种方式更省时间。

③登陆的时候遇到“mysql Access denied for user root@localhost”

一般有几种原因:一、密码输错  二、对此用户限制了localhost登录 

刚装完MYSQL5.6的时候,用mysql -uroot 和mysql-uroot -proot 登陆都遇到这个问题,本来mysql默认是没密码的。觉得奇怪。后面发现mysql5.6搞了一个初始密码,比如我是在Linux下用root装的MYSQL,在root用户的主目录下就有一个.mysql_secret的文件,文件内容即是mysql的初始密码。

④此问题接上步,用初始密码登录之后,提示“ERROR 1820 (HY000): You must SET PASSWORD before executing this statement”

百度了大半天,都是说用 SET PASSWORD = PASSWORD('新密码') 然而整了之后提示另一个"ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number;"大意是说密码不能用明文。(PASSWORD()这个函数就已经有加密作用了)。

解决办法:登陆mysql之后,先敲 set old_passwords=0 ,然后再进行上步。

⑤启动MYSQL失败: Another MySQL daemon already running with the same unix socket

service mysqld stop
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值