Mysql的这些坑

到MySQL官网上http://dev.mysql.com/downloads/mysql/,下载mysql可安装dmg版本
 下载完的文件为:mysql-5.6.10-osx10.7-x86_64.dmg

1.安装 傻瓜式的安装就可以了

2. 安装好后,再系统偏好设置的其他里,会出现如下图标:


3.点击此图标,跳出对话框

点击Start MySQL Server按钮,启动mysql

二、打开终端,定义mysql别名

输入alias命令

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

回车,再输入

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

三、设置mysql root帐号的密码

mysqladmin -u root password 初始密码

2.如果设置完密码后,需要修改,执行命令

mysqladmin -u root -p  password 最新密码

接着会提示输入密码,此时输入旧密码,回车

 四、连接数据库

mysql -u root -p

然后提示输入密码,输入三中设置的初始密码

2.如果登陆远程主机上的mysql数据库

mysql -h 主机地址 -u 用户名 -p 用户密码

 

五、执行常用的mysql数据库操作

注意:以下操作都发现在,连接数据库之后,进入mysql环境,之后执行的命令都必须带有分号“;”

首先,以root权限连接mysql

mysql -u root -p

然后,输入root的密码

1、增加新用户

格式如下:

grant 操作权限 on 数据库.* to 用户名@登陆主机地址 identified by '密码';

意思是:授予,某主机上的某用户(附带该用户的登陆密码)在某数据库上,执行某些操作的权限

(1)比如:任意主机上("%"),用户(用户名:test1,密码:adc)在所有数据库上,执行任意操作的权限(很危险)

grant all privileges on *.* to test1@"%" identified by "abc";

其中all privileges表示查询,插入,修改,删除的权限:select,insert,update,delete

以上命令等价于:

grant select,insert,update,delete on *.* to test1@"%" identified by "abc";

然后刷新权限

flush privileges;

 (2)比如:授权本地主机上的用户操作数据库的权限

创建数据库(比如:openfire)

create database openfire;

授予本地主机用户(用户名:test2,密码:123)访问数据库(数据库名称:openfire)的操作权限

grant all privileges on openfire.* to test2@localhost identified by "123";
flush privileges;

 之后,就可以用新的用户,访问openfire数据库了

2.更新指定帐户的密码(用户名:test1,新密码:1234)

update mysql.user set password=password('1234') where User="test1" and Host="localhost";

 3.删除用户

先使用mysql数据库

use mysql;

删除mysql数据库中user表中的某个本地用户(test7)

delete from user where User="test7" and Host="localhost";

 4.显示命令

(1)显示所有数据库列表

show databases;

初始化只有两个数据库,mysql和test

注意:MYSQL的系统信息都存储在mysql库中,比如:修改密码和新增用户,实际上就是用这个库进行操作

(2)打开某个数据库(比如数据库:openfire)

use openfire;

(3)显示本库中的所有表

show tables;

(4)显示某表(table1)的结构

describe table1;

(5)建库

create database 库名;

(6)建表

use 库名;

create table 表名 (字段设定列表);

(7)删库

drop database 库名;

(8)删表

drop table 表名;

(9)将表中的记录清空

delete from 表名;

(10)显示表中的记录

select * from 表名;

六、退出mysql

exit

 七、启动和停止MySQL 

启动

/usr/local/mysql/share/mysql.server start

停止

/usr/local/mysql/bin/mysqladmin -u root -p shutdown

输入root密码



注:忘记root密码了?OMG的,(我之前就是忘记了T_T)没事往下看
1.进入系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server)

2.进入终端输入:cd /usr/local/mysql/bin/
回车后 登录管理员权限 sudo su
回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &
回车后mysql会自动重启(偏好设置中mysql的状态会变成running)



输入命令 ./mysql
回车后,输入命令 FLUSH PRIVILEGES;
回车后,输入命令 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

OK,至此密码已经修改完成,可以是使用这个密码了!











<think>好的,用户想了解MySQL 8.2.0版本中的潜在问题或缺陷以及常见问题和解决方案。首先,我需要确认MySQL 8.2.0是否已经发布。根据我所知,截至2023年10月,MySQL的最新稳定版本是8.0.x系列,而8.2.0可能是一个开发版本或者用户提到的版本号有误。不过,用户可能指的是某个特定的版本,比如8.0.22或其他小版本,或者可能是笔误。假设用户确实是指8.2.0,但考虑到官方并未发布该版本,可能需要先核实这一点。 接下来,我需要参考用户提供的引用内容。引用[1]提到身份验证问题,引用[2]讨论了加密规则变更导致的连接错误,引用[3]介绍了MySQL 8.0的技术更新,引用[4]涉及安装时的数据库创建。这些引用主要围绕MySQL 8.0的常见问题,尤其是身份验证和加密相关的问题。用户的问题可能是在此基础上,想了解更高版本可能出现的问题。 由于MySQL 8.2.0可能不存在,用户可能混淆了版本号。例如,MySQL 8.0之后的版本可能以8.0.x的形式递增,而不是直接跳到8.2.0。因此,在回答时需要指出这一点,并假设用户可能指的是某个8.0.x版本,如8.0.22或8.0.30,或者可能用户看到了预发布版本的问题。 接下来,我需要列举MySQL 8.0系列中的常见问题,比如身份验证插件变更、字符集问题、权限管理变化、性能调整等,并提供解决方案。同时,结合引用中的信息,如身份验证问题可以通过修改加密规则解决,字符集错误需要检查连接参数等。 还需要考虑用户可能遇到的安装、升级、兼容性、性能优化等方面的问题。例如,升级到新版本时,旧应用的兼容性问题,存储引擎的变化,默认配置的调整等。对于每个问题,需要给出具体的解决步骤或建议,如修改配置文件、更新连接器版本、调整SQL语句等。 此外,用户可能需要知道如何获取官方支持或查看已知问题列表,因此可以建议查阅MySQL官方文档、社区论坛或问题追踪系统。同时,提醒用户在生产环境中谨慎升级,进行充分测试。 最后,生成相关问题,帮助用户进一步探索,比如如何安全升级、新版本特性、性能测试方法等。确保回答结构清晰,分点列出问题和解决方案,并引用提供的资料支持答案。</think>根据MySQL 8.x系列版本的演进规律和已知技术特性,以下是MySQL 8.0.x系列(包括潜在8.2.0版本)常见问题及解决方案的总结: ### 一、身份验证与连接问题 1. **加密规则变更导致的连接失败** MySQL 8.0默认使用`caching_sha2_password`加密插件,旧客户端驱动可能报错`Authentication plugin 'caching_sha2_password' cannot be loaded`[^2]。 **解决方案**: - 修改用户密码插件: ```sql ALTER USER '用户名'@'主机' IDENTIFIED WITH mysql_native_password BY '新密码'; ``` - 或在`my.cnf`中强制指定默认插件: ``` default_authentication_plugin=mysql_native_password ``` 2. **字符集编码异常** 出现`Unknown initial character set index '255'`错误时[^1],需检查连接参数是否缺失字符集配置。 **解决方案**: 在JDBC连接字符串中添加`useUnicode=true&characterEncoding=UTF-8`。 ### 二、升级兼容性问题 1. **Data Dictionary重构影响** MySQL 8.0采用全新数据字典存储元数据,可能导致旧版备份工具失效[^3]。 **解决方案**: 使用`mysqldump`或官方推荐的MySQL Shell升级工具进行数据迁移。 2. **保留关键字扩展** 新增如`GROUP`等保留关键字,原有SQL语句可能报语法错误。 **解决方案**: 对冲突字段名使用反引号包裹:``SELECT `group` FROM table``。 ### 三、性能与配置问题 1. **并行查询限制** 部分场景下并行查询优化器选择不理想。 **解决方案**: 通过`EXPLAIN ANALYZE`分析执行计划,使用`optimizer_switch`参数调整优化策略: ```sql SET GLOBAL optimizer_switch = 'parallel_query_optimization=off'; ``` 2. **内存分配机制变化** 默认使用`jemalloc`内存管理器,某些Linux环境可能出现兼容性问题。 **解决方案**: 启动时指定`--malloc-lib=system`强制使用系统malloc。 ### 四、开发特性注意事项 1. **窗口函数资源消耗** 复杂窗口函数可能导致临时表空间激增。 **解决方案**: 监控`tmp_table_size`参数,必要时拆分复杂查询。 2. **JSON字段索引限制** JSON字段虽支持索引,但多级路径索引效率可能低于预期。 **解决方案**: 使用生成列提取JSON值后创建二级索引: ```sql ALTER TABLE test ADD COLUMN name VARCHAR(20) GENERATED ALWAYS AS (json_column->>'$.name'); CREATE INDEX idx_name ON test(name); ``` ### 五、安装与运维建议 1. **初始化数据库失败** 使用`mysqld --initialize`时需确保数据目录为空[^4],否则会报`Can't create directory`错误。 **解决方案**: 清空目标目录或指定新路径: ```bash mysqld --initialize-insecure --datadir=/new/data/path ``` 2. **密码策略变更** 默认启用`validate_password`组件,简单密码会触发`ERROR 1819`。 **解决方案**: 临时禁用策略或设置符合规则的密码: ```sql UNINSTALL COMPONENT 'file://component_validate_password'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值