文章目录
一、mysql安装
1. Win10安装MySQL5.7.28 解压缩版(手动配置)方法
-
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
-
可以把解压的内容随便放到一个目录,我的是如下目录(放到C盘的话,可能在修改ini文件时涉及权限问题,之后我就改放D盘了):
比如下载 文件为 mysql-5.7.28-winx64.zip 解压到
D:\MySQL\mysql-5.7.28-winx64
此时加压后的文件中没有data目录和ini文件
-
在D:\mysql-5.7.28-winx64目录下新建my.ini文件,复制如下内容
[mysqld] port = 3306 basedir=D:\MySQL\mysql-5.7.28-winx64 datadir=D:\MySQL\mysql-5.7.28-winx64\data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] default-character-set=utf8 -
下面配置环境变量:
在系统变量部分新建一个变量名:MYSQL_HOME, 变量值:D:\MySQL\mysql-5.7.28-winx64
在Path最后加入如下所示:%MYSQL_HOME%\bin
-
MySQL安装过程
管理员身份运行cmd进入如下目录:D:\MySQL\MySQL Server 5.7.22\bin
运行命令:mysqld --initialize (此时会生成data目录)
运行mysqld -install (安装)
运行net start mysql (启动mysql服务)命令如下:
D:\MySQL\mysql-5.7.28-winx64\bin>mysqld --initialize D:\MySQL\mysql-5.7.28-winx64\bin>mysqld -install Service successfully installed. D:\MySQL\mysql-5.7.28-winx64\bin> D:\MySQL\mysql-5.7.28-winx64\bin>net start mysql MySQL 服务正在启动 . MySQL 服务已经启动成功。 D:\MySQL\mysql-5.7.28-winx64\bin> -
设置root账户密码:
在my.ini文件(MySQL的配置文件)的[mysqld]下加一行skip-grant-tables
重启mysql服务
net stop mysql net start mysql重启MqSQL服务后,运行mysql -uroot -p,可以成功登入mysql,然后更新root账户的密码为’root’
mysql -uroot -p update mysql.user set authentication_string=password("root") where user="root"; flush privileges; quit;执行quit或ctrl+Z退出
然后将my.ini文件中刚才加的skip-grant-tables这一行删掉,保存后再重启MySQL服务
1.1 过程问题整理
- 如果运行命令提示:由于找不到MSVCR120.dll
执行命令
D:\MySQL\mysql-5.7.28-winx64\bin>mysqld --initialize
报错:
由于找不到MSVCR120.dll,无法继续执行代码.重新安装程序可能会解决此问题。
这种情况需要安装 vcredist
下载vcredist :https://www.microsoft.com/zh-CN/download/details.aspx?id=40784
下载后,直接安装。
- You must reset your password using ALTER USER statement before executing this statement
第一次初始化,安装修改完密码后,mysql -uroot -proot登录提醒报错:You must reset your password using ALTER USER statement before executing this statement
运行这条语句进行修改密码:alter user user() identified by “root”;
- Access denied for user
授权root用户可以从任意电脑登录MySQL数据库
GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2. linux 安装Mysql
Ubuntu安装Mysql
方法一:通过apt 安装MySQL服务(推荐,会安装最新版)
1、apt 安装
#命令1 更新源
sudo apt-get update
#命令2 安装mysql服务
sudo apt-get install mysql-server
2、初始化配置
sudo mysql_secure_installation
参考如下选择:
#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)
#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)
#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (选择N,不删除匿名用户)
#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择N,允许root远程连接)
#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择N,不删除test数据库)
#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择Y,修改权限立即生效)
3、检查mysql服务状态
systemctl status mysql.service
4、配置远程访问
在Ubuntu下MySQL缺省是只允许本地访问的,如果你要其他机器也能够访问的话,需要进行配置;
找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
sudo /etc/init.d/mysql restart
sudo mysql -uroot -p
输入用户密码
#切换数据库
mysql>use mysql;
#查询用户表命令:
mysql>select User,authentication_string,Host from user;
#查看状态
select host,user,plugin from user;

#设置权限与密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; #使用mysql_native_password修改加密规则
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; #更新一下用户的密码
mysql> UPDATE user SET host = '%' WHERE user = 'root'; #允许远程访问
#刷新cache中配置 刷新权限
mysql>flush privileges;
mysql>quit;
localhost就是本地访问,配置成 % 就是所有主机都可连接;
5、MySQL用户数据库赋权
为mysql创建用户:test 密码为:test
create user dev@'%' IDENTIFIED by 'dev';
重点解释一下@‘%’ 在这个语句中的作用(白名单的作用:就是设置哪些网段的人可以才有权限)
test@‘10.0.0.%’ 分配10.0.0.XXX/24为白名单(24就是255.255.255.0)
test@‘%’ 分配全部地址为白名单(只要能ping通)
test@‘10.0.0.200’ 分配唯一地址为白名单
test@‘localhost’ 分配自己为白名单
test@‘db02’ 分配主机名为白名单
test@‘10.0.0.5%’ 分配网段白名单
修改密码:
alter user dev@'%' identified by '123456';
flush privileges;
查看下用户dev的权限
SELECT * FROM user WHERE user='dev' ;
SHOW GRANTS FOR dev;
创建数据库,并给用户dev在数据库名为dev_db上赋EXECUTE(执行存储过程),INSERT,SELECT,UPDATE权限,@'%'表示从任意ip都可以访问到这个数据库
CREATE DATABASE `dev_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
show databases;
GRANT EXECUTE,INSERT,SELECT,UPDATE ON dev_db.* TO 'dev'@'%';
FLUSH PRIVILEGES;
再次查询 下权限
SELECT * FROM user WHERE user='dev' ;
SHOW GRANTS FOR dev;
6、mysql服务命令
#检查服务状态
systemctl status mysql.service
或
sudo service mysql status
mysql服务启动停止
#停止
sudo service mysql stop
#启动
sudo service mysql start
方法二:安装指定版本
在Ubuntu中,默认情况下,只有最新版本的MySQL包含在APT软件包存储库中,要安装它,只需更新服务器上的包索引并安装默认包apt-get。
如果因为程序兼容性问题,要安装5.7版本,则可以同过下载安装。
- 在官网下载mysql安装包
https://downloads.mysql.com/archives/community/
选择适合的 MySQL 版本进行下载。可以选择 .deb 或 .tar 包。通常 .deb 包更方便安装。
下载的时候选择第一个(也就是最大的那个安装包):
wget https://cdn.mysql.com/archives/mysql-8.4/mysql-server_8.4.2-1ubuntu22.04_amd64.deb-bundle.tar
- 解压和安装
随便找个地方把他解压出来,执行命令:
mkdir mysql_tmp_dir
cd mysql_tmp_dir
tar -xvf mysql-server_8.4.2-1ubuntu22.04_amd64.deb-bundle.tar
解压出来长这个样子:

进入到这个目录下,执行安装命令(这个命令会加载指定路径下的所有被通配符匹配的文件,并自动处理其依赖顺序,按照正常的依赖顺序安装。注意当前目录下不要有其他非mysql相关的文件)
sudo dpkg -i ./*
如果执行这个命令出现有依赖在当前系统中不存在,可以使用如下指令进行修复(这个命令会检查当前目录下的所有deb安装包,检查其是否依赖其他文件,并自动下载其依赖的所有安装包并自动安装,然后再自动安装当前路径下的所有安装包。
apt install -f
安装过程中会弹出三个界面,前两个是设置mysql数据库的root账号的密码与确认root的密码,可以自己设置你需要的密码
安装完成后使用命令检查mysql的包是否已经全部安装
dpkg -l | grep mysql
- 启动服务
先试用命令检查mysql是否已经启动(一般在安装完成后会默认启动)
mysqld --user=mysql
- 进入MySQL
mysql -u root -p
-
排查日志
一定要学会查看日志排查问题
cat /var/log/mysql/error.log -
重置mysql所有数据
# 查看是否有其他 MySQL 进程
ps aux | grep mysqld
# 停止 MySQL 服务
sudo pkill -f mysqld
# 完全重置(注意:会删除所有数据)
rm -rf /var/lib/mysql/*
sudo mysqld --initialize-insecure --user=mysql
报错:MySQL提示:Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires secure connection.
这种情况,需要给root设置密码,我们刚才重置,么有设置密码导致。
设置 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_strong_password';
CREATE USER 'root'@'%' IDENTIFIED BY 'new_strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3. macos下安装
使用Homebrew(推荐)方式
# 安装Homebrew(如果还没安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装MySQL
brew install mysql
# 启动MySQL服务
brew services start mysql
# 设置开机自启
brew services restart mysql
DMG安装包方式
- 在官网下载mysql安装包
https://downloads.mysql.com/archives/community/ - 选择macOS版本
- 下载DMG安装包
- 双击安装
- 安装过程会提醒输入root密码
验证安装
# 查看MySQL版本
/usr/local/mysql/bin/mysql --version
# 设置PATH(可选,但推荐)
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.zshrc
# 或者 ~/.bash_profile(取决于你使用的shell)
source ~/.zshrc
登录
mysql -u root -p
启动和停止MySQL服务
/usr/local/mysql/support-files/mysql.server start
# 停止服务
/usr/local/mysql/support-files/mysql.server stop
# 重启服务
/usr/local/mysql/support-files/mysql.server restart
4. 常用配置
开放root账户的访问权限
mysql -h 127.0.0.1 -u root -p
use mysql;
select host,user from user;
在这张表里,我们看到root用户仅仅只能在本地访问MySQL服务,所以我们要把它修改为“%”,意思是无论在哪里root账户都能够访问数据库服务:
update user set host='%' where user='root';
最后一项设置,开放root账户所有权限:
grant all privileges on *.* to 'root'@'%' identified by '你的root账户密码';
使各种权限设置立即生效:
flush privileges;
注意,在真实的生产环境中,并不建议这么修改,因为安全风险太大。我建议根据实际情况将root用户的host项修改为某个指定的ip地址,或仍然保持localhost
linux mysql 忘记密码修改密码
1)跳过密码登录
修改文件
vim /etc/my.cnf
定位到[mysqld]文本段:
(在vim编辑状态下直接输入该命令可搜索文本内容)
/mysqld
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程
2)重启服务器,修改密码
/etc/init.d/mysql restart
进入mysql
mysql -u root -p 直接回车进入
注意这个时候要查看mysql的版本
MySQL5.7和之前的用户修改密码方式:
我的版本是5.7.26
我使用的语句是:
update user set authentication_string=password(“123456”) where user=“root”;
如果是5.7.11以前的版本
则使用一下的语句:
update user set password=password(“123456”) where user=“root”;
MySQL8.0以后版本:
use mysq;
update user set authentication_string='' where user='root';
再输入exit退出mysql命令行,删掉配置文件中的那行,并且重启MySQL服务,然后再次进入MySQL命令行。
/etc/init.d/mysql restart
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
或
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
exit
提示:密码要8位及以上,有大小写,有特殊字符,否则不符合密码策略。
然后执行:
flush privileges;
修改mysql配置文件,把跳过密码登录的那一行注释掉
重启服务器登录密码
MySQL8.0后请使用alter修改用户密码,因为在MySQL8.0以后的加密方式为caching_sha2_password,如果使用update修改密码会给user表中root用户的authentication_string字段下设置newpassowrd值,当再使用alter user ‘root’@‘localhost’ identified by 'newpassword’修改密码时会一直报错,必须清空后再修改,因为authentication_string字段下只能是MySQL加密后的43位字符串密码,其他的会报格式错误,所以在MySQL8.0以后能修改密码的方法只能是:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;
MySQL8.0以后能修改密码的方法只能是:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;
二、mysql常用命令
创建数据库
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
在我们创建mysql数据库的时候我们经常会用到这句SQL:CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci。
那么这句sql的每一部分分别代表着什么?又有什么意义?在看了网上很多资料后想总结下。
我们将这句sql划分为三段:CREATE DATABASE test , DEFAULT CHARACTER SET utf8, COLLATE utf8_general_ci。
CREATE DATABASE test : 代表的是创建数据库 test。
DEFAULT CHARACTER SET utf8 : 代表的是将该库的默认编码格式设置为utf8格式。
COLLATE utf8_general_ci : 代表的是数据库校对规则,utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。
Mysql添加用户与授权
-
添加用户
//只允许指定ip连接
create user ‘新用户名’@‘localhost’ identified by ‘密码’;
//允许所有ip连接(用通配符%表示)
create user ‘新用户名’@‘%’ identified by ‘密码’; -
为新用户授权
//基本格式如下
grant all privileges on 数据库名.表名 to ‘新用户名’@‘指定ip’ identified by ‘新用户密码’ ;
//示例
//允许访问所有数据库下的所有表
grant all privileges on . to ‘新用户名’@‘指定ip’ identified by ‘新用户密码’ ;
//指定数据库下的指定表
grant all privileges on test.test to ‘新用户名’@‘指定ip’ identified by ‘新用户密码’ ; -
设置用户操作权限
/设置用户拥有所有权限也就是管理员
grant all privileges on . to ‘新用户名’@‘指定ip’ identified by ‘新用户密码’ WITH GRANT OPTION;
//拥有查询权限
grant select on . to ‘新用户名’@‘指定ip’ identified by ‘新用户密码’ WITH GRANT OPTION;
//其它操作权限说明,select查询 insert插入 delete删除 update修改
//设置用户拥有查询插入的权限
grant select,insert on . to ‘新用户名’@‘指定ip’ identified by ‘新用户密码’ WITH GRANT OPTION;
//取消用户查询的查询权限
REVOKE select ON what FROM ‘新用户名’; -
删除用户
DROP USER username@localhost; -
修改后刷新权限
FLUSH PRIVILEGES;
mysql修改某个用户密码
使用update 直接修改mysql.user表
use mysql
update user set authentication_string=password('xxxxxx') where user='xxxxxx';
flush privileges;
注意: 密码是xxxxxx。
创建 库
CREATE DATABASE test-db;
三、参考
Win10安装MySQL5.7.22 解压缩版(手动配置)方法
参考URL: https://www.cnblogs.com/xiaxiaoxu/p/8977418.html
MySQL部署时提示Table mysql.plugin doesn’t exist的解决方法
参考URL: http://www.cppcns.com/shujuku/mysql/194048.html
688






