mysql数据库

MySql 1045错误

不羁岁月 提交于 2020-03-18 13:23:09
   配置时以管理员身份运行MySQL Instance Configuration Wizard   当你登录MySQL数据库出现:Error 1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访问了,最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信息将丢失,如果你不想重装,那么就需要找回密码或者重置密码。解决的方法应该有多种,这里我推荐大家使用一种原理通过,操作简单的方法,适用于windows以及linux平台。 MySQL 1045错误如图: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 解决方案: 1、 停止服务:停止MySQL服务; 2、 跳过验证:修改MySQL安装目录下的my.ini配置文件,使登录时跳过权限检查; 3、 修改密码:启动MySQL服务,登录MySQL,此时提示输入密码,输入任意密码回车即可进入MySQL。然后通过SQL语句修改root用户的密码; 4、 重启服务:将my.ini文件中加入的跳过权限语句删除或加#号注释。重启服务,使用修改后的密码登录即可。 Windows系统具体操作: 1、 停止服务: 方法1:使用dos命令 net stop mysql 即可

Navicat for Mysql 1045错误

时光总嘲笑我的痴心妄想 提交于 2020-03-18 13:02:06
在使用图形用户工具Navicat for MySQL新建连接时,会报一个1045,某用户访问拒绝的错误。 一般的解决办法是需要重新修改Mysql的密码,操作步骤如下: 1 net stop mysql 停止mysql服务 2 进入mysql安装路径的bin目录下,使用mysqld命令,在cmd下 mysqld --skip-grant-tables 3 开一个新的cmd窗口 mysql 不需要用户名就可以登录数据库了 4 登录成功后 show databases; 再use mysql; 即进入mysql数据库 5 继续 show tables; 会发现有一个user表 6 继续 select user,host,authentication_string from user; 7 继续 update user set authentication_string=password('123456') where user='root' 即重置root用户的密码 8 继续 flush privileges; 9 继续 quit; 退出mysql net stop mysql ; net start mysql 重新启动mysql 10 mysql -uroot -p123456 使用root用户新密码登录 进入mysql则表示成功 Mysql启动的问题:建议最好多看看启动日志

ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES)

僤鯓⒐⒋嵵緔 提交于 2020-03-18 12:52:17
今天mysql怎么都登录不上去,然鹅,我明明记得输入的密码是对的啊。。。(微笑中透着疲倦) 在网上找了很多资料,又是改这又是改那的。。。。 终于在这位老兄那里找到了解决方案。转自https://www.cnblogs.com/summertime-wu/p/7466160.html 我查了一下,果然,有匿名用户“‘@’localhost”巴拉巴拉,删之。。 就是说你有一个用户名为空的账户,mysql会先匹配它,然后就一直提示你密码错误,删掉这个匿名用户,然后执行 FLUSH PRIVILEGES; 所以执行: Delete FROM user Where User='' and Host='localhost'; flush privileges;重启数据库,再次登录 mysql -uroot -p,输入密码即可。 来源: https://www.cnblogs.com/VolcanoCan/p/10062790.html

重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

♀尐吖头ヾ 提交于 2020-03-18 12:50:44
一般这个错误是由密码错误引起,解决的办法自然就是重置密码。 假设我们使用的是root账户。 1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下: #vim /etc/my.cnf(注:windows下修改的是my.ini) 在文档内搜索mysqld定位到[mysqld]文本段: /mysqld(在vim编辑状态下直接输入该命令可搜索文本内容) 在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示: 保存文档并退出: #:wq 2.接下来我们需要重启MySQL: /etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart) 3.重启之后输入#mysql即可进入mysql。 4.接下来就是用sql来修改root的密码 mysql> use mysql; mysql> update user set password=password("你的新密码") where user="root"; # 原来是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string update user set authentication_string=password('root') where user=

远程连接linux服务上的mysql

六眼飞鱼酱① 提交于 2020-03-18 11:26:55
如果有童鞋linux上还未安装mysql数据库可以参考我上一篇博客 (1)首先确保 linux服务上的 mysql 的3306端口是对外开放的   编辑 vi /etc/sysconfig/iptables   将 如下 内容拷贝进去(注意 :不要粘贴在文件的最后 , 否则会不起作用,大致应放在倒数第三行 ) :   -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT (2)重启防火墙    service iptables restart (3)确保linux系统在 桥接模式下是可以联网的 (4)登录mysql 设置远程ip地址可以登录的权限   1)、登录 mysql -uroot -p   2)、输入密码   3)、切换mysql库 : use mysql; (注意: 执行mysql命令时 ,记得带 ; 号 , root:用户;xx:密码 )   4)、赋予权限    : grant all privileges on *.* to 'root'@'% 'identified by 'xx' with grant option;   5)、刷新权限表  : flush privileges ; (5)、以navicat为例 连接mysql    1)、查询 linux服务的 ip地址    

MYSQL数据库进阶操作

こ雲淡風輕ζ 提交于 2020-03-18 11:12:41
一,基础强化 where语句的作用: 使用where子句对表中的数据筛选,结果为true的行会出现在结果集中. 1,as关键字 在使用SQL语句显示结果的时候,往往在屏幕显示的字段名并不具备良好的可读性,此时可以使用 as 给字段起一个别名。 1)使用 as 给字段起别名 select id as 序号, name as 名字, gender as 性别 from students; 2)可以通过 as 给表起别名 -- 如果是单表查询 可以省略表明 select id, name, gender from students; -- 表名.字段名 select students.id,students.name,students.gender from students; -- 可以通过 as 给表起别名 select s.id,s.name,s.gender from students as s; 2,消除重复行(distinct) distinct 可以消除重复的行。 select distinct 列1,... from 表名; 例: select gender from students; -- 看到了很多重复数据 想要对其中重复数据行进行去重操作可以使用distinct select distinct gender from students; 二,条件查询 select

MySql的读写分离

谁都会走 提交于 2020-03-18 11:00:06
数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。 主从集群 这种集群方式,就是将访问的压力从主库转移到从库,单机的数据库不能支撑并发读写的时候,而且读的请求很多的情况下就适合数据库集群。如果写的操作很多的话,那就不适合这种集群方式,因为写的时候是写入主库,主库的压力还是没有变化,同时同步到从库也需要消耗资源。 单机的时候,一般数据库优化就是加索引,但是加了索引对查询有优化,但是写入的时候会有影响,因为写入的数据库不会更新索引。所以在主从数据库中,可以单独的对读库(从数据库)做索引,而写库(主数据库)可以减少缩影而提高写的效率。 但是主从数据库中需要注意: 主从同步延迟、分配机制的考虑 主从同步延迟 二次读取 一般操作是,在从库读取数据时,没有读到数据,就去主库进行数据读取。但是这种操作还是将读的压力返还给主库,如果有恶意的攻击,主库就爆了。 一般情况下,通过对数据库访问的API进行封装就能实现这个功能,业务之间没有耦合。 写了之后的马上读操作操作主库 在写了数据后,立马读操作就去访问主库,之后的读操作访问从库,这种业务上会有高度耦合。 根据业务,将重要的业务数据的读写都放在主库

高性能MySQL 第一章 mysql架构与历史

人盡茶涼 提交于 2020-03-18 10:44:43
mysql的存储引擎架构把查询处理及其他系统任务和数据的存储/提取相分离 1.1 mysql逻辑架构   第一层:链接处理、授权认证、安全等大多数基于网络的工具或者服务都有类似的架构   第二层:核心服务,查询解析、分析、优化、缓存、所有的内置函数(日期、时间等),所有跨存储引擎的功能,存储过程、触发器、视图等   第三层:存储引擎,负责数据的存储和提取   1.1.1 连接管理与安全性     每个客户端连接都会在服务器进程中拥有一个线程,服务器会缓存线程,   1.1.2 优化与执行     mysql会解析查询,并创建解析书,然后优化。     在查询之前,会先检查查询缓存 1.2 并发控制   1.2.1 读写锁     读锁和写锁     1.2.2 锁颗粒       表锁:       行级锁:可以最大程度的支持并发,只在存储引擎层实现 1.3 事务   原子性、一致性、隔离性、持久性   1.3.1 隔离级别     未提交读:事务的修改,即使没有提交,对其他事务也都是可见的。脏读     提交读:一个事务只能看见已经提交的事务的修改。不可重复读     可重复读:保证了同一个事务中多次读取同样记录的结果是一致的,mvcc,mysql默认隔离级别     可串行化:强制事务串行执行   1.3.2 死锁     各种死锁检测和死锁超时机制

mysql的多实例安装

余生颓废 提交于 2020-03-18 08:04:17
单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我。下面就说说步骤。 承上文http://www.cnblogs.com/wingsless/p/4002806.html,我已经安装好了MySQL,不过这个是单实例的,要更改也可以,但是担心会出现问题,于是我将下面的东西删掉: 1 #rm -f /etc/init.dmysql 2 $rm -f /home/mysql/data 建立这么几个目录: $mkdir -p /home/mysql/mydata/data1/binlog /home/mysql/mydata/data1/relay_log /home/mysql/mydata/data1/socket $mkdir -p /home/mysql/mydata/data2/binlog /home/mysql/mydata/data2/relay_log /home/mysql/mydata/data2/socket 接下来就可以将$MYSQL_HOME/suppuort-files/my-default.cnf复制到/etc下: #cp suppuort-files/my-default.cnf /etc/my.cnf 修改这个文件,增加下面的内容: [mysqld

sql语句应考虑哪些安全性?

人走茶凉 提交于 2020-03-18 08:02:58
简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析? (1)尽量选择较小的列; (2)将where中用的比较频繁的字段建立索引; (3)select中避免使用*; (4)避免在索引列上使用计算、not in和<>等操作; (5)当只需要一行数据时候使用limit1; (6)保证单表数据不超过200w,实时分割表; 针对查询较慢的语句,可以使用explain来分析该语句具体的执行情况。 sql语句应考虑哪些安全性? (1)少使用root账户,应该为不同的动作分配不同的账户; (2)sql执行出错后,不能把数据库中显示的出错信息,直接展示给用户。防止泄露服务器和数据库相关信息; (3)防止sql注入,对特殊字符进行转义、过滤或者使用预编译的sql语句绑定变量 接下来重点说下Mysql半同步复制, 从MySQL5.5开始,MySQL以插件的形式支持半同步复制 。先来区别下mysql几个同步模式概念: 异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。 全同步复制(Fully synchronous