mysql重置密码
查询日志
如果是第一次登录,不知道密码的情况下,且使用
yum等方式安装,可用以下命令查看默认密码grep 'temporary password' /var/log/mysqld.log
跳过登录验证
修改
mysql的配置文件---my.conf在最头部的[mysqld]下添加
skip-grant-tables # 跳过登录验证
之后在重启
mysql服务
systemctl restart mysqld
用以下命令进入
mysql
mysql -uroot
之后切换
mysql数据库,进行用户root密码的修改
user mysql; # 切换到mysql数据库下
update user set password=password('新密码') where user='root' #修改root用户的密码
flush privileges; # 刷新权限,使其立即生效
select host,user,password from user;# 可查看修改后用户的权限
exit;退出
之后可尝试使用新的密码进入
mysql,成功之后,将原先在my.conf下添加的跳过验证语句删除,并保存,重启mysql服务
设置远程登录
- 其中
*.*,第一个表示的是数据库,第二个是表,如果为都为*表示为所有数据库和表的权限’root‘@’%‘,root是用户名,即远程登录的用户名,%是准许连接的ip,%表示任意
mysql8.0
# 第一次设置root远程登录,并配置远程密码使用如下SQL命令
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!'; -- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
grant all on *.* to 'root'@'%'; # 授予权限
alter user 'root'@'%' identified with mysql_native_password by '密码';
FLUSH PRIVILEGES; # 刷新权限
mysql5.7
GRANT ALL PRIVILEGES ON *.* TO '数据库用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; # 授予权限
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
之后再重启
mysql,如果远程连接不上,可能是云服务器的防火墙没关,或者把3306端口开发
systemctl restart mysqld; # 重启mysql
systemctl stop firewalld; # 关闭防火墙
MYSQL进阶知识
SQL性能分析
-- session 查看当前会话,也不是很懂
-- global 是查询全局数据
-- 其中like 后接的字符匹配 _表示一个占位符,任意
show global status like 'Com_______'
-- 查看慢查询日志是否开启
show VARIABLES LIKE 'slow_query_log'
-- profile 帮助做sql优化时查看时间,查看是否支持profile
select @@have_profiling
-- 查看profile是否开启
select @@profiling;
-- 开启profile
set profiling=1;
-- 开启profile后,每次sql的执行时间都会被记录下来
-- 查看每一条sql的基本耗时
show profiles;
-- 查看指定query_id的sql语句各个阶段的耗时情况,query_id通过上面语句查询得出
show profiles for query query_id;
-- 查看指定query_id的sql语句cpu的使用情况
show profile cpu for query query_id;
开启慢查询日志
在
/etc/my.cnf配置文件下,添加如下配置,之后再重启mysql
systemctl restart mysqld
# 开启MySQL慢日志查询开关
slow_query_log=1
# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long_query_time=2
其他
MySql的版本问题
- 8.0的默认字符编码
utf8,即utfmb3,也可以选择utfmd4存储,因为utf8mb3无法存储表情包哪些特殊字符,表的排序规则utf8mb4_0900_ai_ci- 5.7的默认字符编码
utf8,表的排序规则utf8_general_ci
mysql安装问题
启动问题
如果在linux系统上安装MySQL出现无法启动的情况,可以通过如下的命令来查看是否缺少依赖
ldd /usr/sbin/mysqld如果显示如下依赖:
libssl.so.10 not found,可通过如下命令进行安装yum install compat-openssl10最后再次重启即可
MySQL无法登录问题
本地登录时显示
Can't connect to local MySQL server through socket '/XXX/mysql.sock'等 ,先查看是否存在对应的文件,如果存在,则考虑是否是权限问题chmod -755 /var/lib/mysql如果是不存在对应的文件,则查找系统是否存在
mysql.sock文件(mysql8.0的一般在/var/lib/mysql), 如果找到对应的sock文件,则建立软连接链接到不存在的目录里ln -s /var/lib/mysql/mysql.sock /xx/mysql.sock最后重启MySQL重新登录即可
最大连接数问题
MySQL默认配置的最大连接数为151,当出现连接数激增的情况时,会出现拒绝连接的情况,这时我们需要通过调整最大连接数来满足我们的需求,查询MySQL的最大连接数可通过如下命令查看
show variables like 'max_connections';
编辑my.cnf
在my.cnf添加最大连接数的配置,然后重启MySQL。
max_connections = 1000