文档章节

MySQL版本升级遇到的问题小结

ChinaHYF
 ChinaHYF
发布于 2017/03/04 19:14
字数 1390
阅读 184
收藏 0

今天进行了项目组的mysql版本升级,过程中遇到了一些问题,做一些记录,和大家共享。

    到MySQL官网下载MySQL Community版,MySQL分为商业版(Enterprise)和社区版(Community),商业版是要收费的,社区版是免费的。

    MySQL提供两种类型的安装包,一种是解压版(Compressed Tar)的,一种是安装版(DMG Archive)的。并且MySQL的安装包是有32位和64位区分的,并且有mac版和Windows版的区分,下载的时候需要留意。我之前装的是安装版的,但是今天升级下来之后,推荐下载使用解压版本的,因为解压版本的可以在一台机器上安装多个版本。而安装版的话是不可以的。并且解压版的可以把层级结构调整好之后,再有更新的时候,直接解压就可以了,解压之后给新版的注册服务修改端口号就可以了。

mac版的解压版安装可以参考这篇博文,这篇博文中的目录结构比较好:http://www.tuicool.com/articles/QFBvq2

mac版5.6安装:http://blog.csdn.net/u014351782/article/details/49865125

mac版5.7安装:https://www.widlabs.com/article/mac-os-x-install-mysql-57-with-tar-gz

我要升级到的版本是5.6,这个版本的新特性可以参考官网,和一些文章:

官网描述:https://dev.mysql.com/doc/refman/5.6/en/introduction.html

http://www.ttlsa.com/mysql/summary-of-the-new-features-of-mysql5_6/

http://blog.csdn.net/wulantian/article/details/29593803

http://www.tuicool.com/articles/nYjqeiN

对我们直接有用的就是timestamp,可以在需要记录时间戳的地方使用,比较方便,但是在旧版本中一张表中只能有一个timestamp生效,要想在多种情况下使用的话,就需要使用触发器来实现(比如在新建的时候需要一个字段来记录新建时间,而更新的时候也需要一个字段来记录更新时间),5.6之后的版本中在一张表中可以让多种情况下timestamp都生效。

1. 在mac环境中进入MySQL 命令行模式:

    先进入位置再登录mysql数据库:    

cd /usr/local/mysql/lib

mysql -u'username' -p'password';

    如果是连接到另外的机器上,则需要加入一个参数-h机器IP

    可以直接把命令拼在一起,用一条命令来实现:

/usr/local/mysql/bin/mysql -u'username' -p'password';

2. mysql的环境变量设置。

    1).终端中执行 vi ~/.bash_profile

    2).点击字母i 进入编辑模式

    3). 在末尾添加以下两行:添加完后按esc键, 输入 :wq 即保存退出        

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

        解释:保存别名使其永久生效(重启不会失效)参照https://www.douban.com/note/577926866/

    4). 登录mysql数据库的命令:mysql -u'username' -p'password';

3. mysql权限管理:http://www.cnblogs.com/SQL888/p/5748824.html

登录MySQL客户端后,查看所有用户及拥有权限:

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

    3.1 创建用户:

CREATE USER TEST1 IDENTIFIED BY 'TEST1';

    3.2 分配权限:格式:grant权限on数据库.* to用户名@登录主机identified by "密码"

        3.2.1 如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。

        3.2.2 如果你不想user1有密码,可以再打一个命令将密码去掉。

 grant select,insert,update,delete on mydb.* to user1@localhost identified by "";

       3.2.3 全部数据库的权限:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

    3.2.4 某个特定数据库(wordpress)的权限:

GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';

      3.2.5 指定该用户只能执行 select 和 update 命令:

GRANT SELECT, UPDATE ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';

       3.2.6 撤销权限:

EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';

每当调整权限后,通常需要执行以下语句刷新权限:FLUSH PRIVILEGES;

       3.2.7 删除创建的用户:

DROP USER username@localhost;

不管是授权,还是撤销授权,都要指定响应的host(即 @ 符号后面的内容),因为以上命令实际上都是在操作mysql 数据库中的user表。

    3.3 显示数据表的结构: describe表名;

    3.4 删库:drop database库名;

    3.5 清空表:TRUNCATE 表名;

    3.6 导出数据:    

mysqldump --opt test > mysql.test将数据库test数据库导出到mysql.test文件,后者是一个文本文件
mysqldump -u root -p123456 --databases dbname > mysql.dbname
就是把数据库dbname导出到文件mysql.dbname中。

    3.7 导入数据:

mysqlimport -u root -p123456 < mysql.dbname

    3.8 将文本数据导入数据库:        

文本数据的字段数据之间用tab键隔开。

        use test;

        load data local infile "文件名" into table表名;

4. 命令行操作MySQL遇到的报错信息以及解决办法:

    4.1 

ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation;

    解决方法:这里的报错是因为登录MySQL的时候只是用了mysql,没有指定用户名和密码导致的。这里应该是指当前登陆者没有这个创建用户的权限。

    4.2

 -bash: mysqld_safe: command not found(为什么进入到 /usr/local/mysql/bin/下之后,一些东西命名存在但是不能执行?)

    解决方法:如果进入到目录都不行的时候,需要在命令前面加上sudo ./ 意思就是以管理员的权限运行当前目录下的某个命令

    4.3 

 

 

© 著作权归作者所有

ChinaHYF
粉丝 16
博文 76
码字总数 76119
作品 0
西安
高级程序员
私信 提问
SpringMvc+Spring4+Hibernate4整合常见错误

最近一直在做SpringMvc+Spring4+Hibernate4的整合,出了不少错误,这都是我们宝贵的经验啊,在整合的过程中,最大的问题就是版本升级的问题,之前做过jdk1.6的例子,很顺利,但是升级到jdk1....

MiniBu
2015/11/03
143
0
Mysql 版本升级,需要注意的几点。

自从 Mysql 5.5.8 出了 GA 性能各方面都比旧版本有相当的提升。 于是我决定从原来的 5.1.x 升级到该版本。 1,升级过程遇到了 PHP 5.2.6 环境重新编译,然而因版本太旧失败。需更新至PHP 5.2...

范堡
2011/01/06
708
1
mysql 数据库定义

mysql msyql 数据库 什么是数据库?存放数据的仓库 传统的关系型数据库:mysql、oracle、db2、sysbase 互联网最火 mysql、oracle 什么是关系型数据库? 1、二维表格 2、互联网运维最常用的是...

鎏金儿
2017/04/05
0
0
MySQL 'In Place' 升级实践,从5.1到5.7

接上篇翻译的文章:使用'In place' 方法直接从5.0升级至5.7,在此记录我实践的过程。 1、环境准备 数据库A 版本:5.1 字符集:latin1 引擎:MyISAM 数据库量:约220G 表数据量:约600 服务器...

Amnesiasun
2017/06/09
0
0
cachecloud 使用几个月的情况与坑

前言 单集群redis cluster 转 cachecloud 几个月来,遇到一些情况与问题的总结. 版本问题 mysql 升级到5.7 默认 cachecloud 底层 db mysql 版本为:MySQL 5.5,升级 mysql 到5.7后出现不兼容sql...

super-wen
2018/08/28
730
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
6
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
17
0
浅谈java过滤器Filter

一、简介 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml...

青衣霓裳
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部