MySQL8.0常用操作与问题解决

MySQL正常途径修改密码

参考: https://blog.csdn.net/magicbreaker/article/details/2392764

其设置密码有以下方法:

1
2
3
4
5
6
7
8
9
10
/*这个命令是在/usr/local/mysql/bin中外部命令*/
./mysqladmin -u root -p oldpassword newpasswd;

/*此为第一次设置密码*/
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

/*以下两种需登陆后操作*/
SET PASSWORD FOR root=PASSWORD(’new password’);

UPDATE user SET password=PASSWORD(”new password”) WHERE user=’root’;

注意:新版的mysql数据库下的user表中已经没有Password字段了,而是将加密后的用户密码存储于authentication_string字段。修改时应为:

1
update mysql.user set authentication_string=password('new password') where user='root' and Host = 'localhost';

修改后记得刷新权限:

1
flush privileges;

Windows下MySQL没有data文件夹

参考:http://www.cnblogs.com/1693977889zz/archive/2018/04/13/8823349.html (MySQL Server [?.?]下会出现data文件夹)(如果要重装)

  1. 删除data文件。我的:C:\Program Files\MySQL\MySQL Server 8.0\data

    注意:这个文件可能在你一直试图操作之后,出现被占用,无法删除的情况,还找不到到底谁占用了。可以尝试重启计算机。

  2. dos下,进入bin目录我的:C:\Program Files\MySQL\MySQL Server 5.7\bin
  3. 执行:mysqld –initialize –console 进行初始化(注意要用管理员权限)(此时mysql会自动帮你重新创建data文件夹)
  4. 重新打开dos,执行:net start mysql

net start mysql出问题

参考:https://blog.csdn.net/u014266077/article/details/70324724

切换到你的mysql的安装目录下的bin目录,执行mysqld.exe –install命令,看到service successfully installed表示安装服务成功。

进到Windows的服务列表,果然MySQL服务出现了,启动mysql服务,然后等待。

my.ini丢失

新建my.ini文件,将下面复制进去,并放到C:\Program Files\MySQL\MySQL Server 8.0中:(注意路径的修改)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:/Program Files/MySQL/MySQL Server 8.0/
# 设置mysql数据库的数据的存放目录
#下行保持注释
#datadir=C:/Program Files/MySQL/MySQL Server 8.0/Data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

mysql-win忘记密码

使用命令:

1
mysqld --console --skip-grant-tables --shared-memory

开启另一个cmd,输入:

1
mysql -u root

然后执行sql命令将root用户密码设置为空:

1
UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';

查看表:

1
select host,user,plugin,authentication_string from mysql.user;

mysql8.04之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”.关闭该命令窗,回到开始命令窗,ctrl+c结束,再用mysql -u root -p登陆,不需要密码便可进入。

设置新密码:

1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';

再次登录成功。修改监听IP
Mysql默认监听127.0.0.1(8.04版本为0.0.0.0)的3306端口,如果需要改变可以修改my.cnf的bind-address
添加文件:/etc/my.cnf,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
#bind-address = 0.0.0.0 #0.0.0.0代表接受所地址的访问
bind-address = 127.0.0.1 #只接受来自本机的访问

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
#bind-address = 0.0.0.0 #0.0.0.0代表接受所地址的访问
bind-address = 127.0.0.1#只接受来自本机的访问

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
#bind-address = 0.0.0.0 #0.0.0.0代表接受所地址的访问
bind-address = 127.0.0.1 #只接受来自本机的访问

phpMyAdmin登陆MySQL8.0 问题

错误提示:

1
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

参考: https://stackoverflow.com/questions/49948350/phpmyadmin-on-mysql-8-0

原因是新的 caching_sha2_password加密方式还没被php支持,应使用mysql_native_password加密:

1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

若还不行就需要重装一遍data文件夹(参考上文data文件夹缺失),重新initialize一下。

CentOS7安装mysql提示“No package mysql-server available

原因是:CentOS7带有MariaDB而不是MySQL,MariaDB和MySQL一样也是开源数据库,可以使用yum命令安装:

1
2
3
4
5
6
7
8
yum -y install mariadb-server
service mariadb restart

#修改密码:
/usr/bin/mysqladmin -u root password 'Password'

#设置开机自动启动:
chkconfig mariadb on

如果必须要安装MySQL,首先必须添加mysql社区repo通过输入命令:

1
sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

最后使用像安装MySQL的常规方法一样安装mysql:

1
yum install mysql mysql-server mysql-libs mysql-server