mysql安装以及常用命令(Win10、Llinux、macos安装MySQL、linux mysql 忘记密码修改密码)

一、mysql安装

1. Win10安装MySQL5.7.28 解压缩版(手动配置)方法

  1. 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

  2. 可以把解压的内容随便放到一个目录,我的是如下目录(放到C盘的话,可能在修改ini文件时涉及权限问题,之后我就改放D盘了):

    比如下载 文件为 mysql-5.7.28-winx64.zip 解压到

    D:\MySQL\mysql-5.7.28-winx64

    此时加压后的文件中没有data目录和ini文件

  3. 在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
    
  4. 下面配置环境变量:
    在系统变量部分新建一个变量名:MYSQL_HOME, 变量值:D:\MySQL\mysql-5.7.28-winx64

在Path最后加入如下所示:%MYSQL_HOME%\bin

  1. 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>
    
  2. 设置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 过程问题整理

  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

下载后,直接安装。

  1. 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”;

  1. 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版本,则可以同过下载安装。

  1. 在官网下载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
  1. 解压和安装
    随便找个地方把他解压出来,执行命令:
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
  1. 启动服务
    先试用命令检查mysql是否已经启动(一般在安装完成后会默认启动)
mysqld --user=mysql
  1. 进入MySQL
mysql -u root -p
  1. 排查日志
    一定要学会查看日志排查问题
    cat /var/log/mysql/error.log

  2. 重置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添加用户与授权

  1. 添加用户
    //只允许指定ip连接
    create user ‘新用户名’@‘localhost’ identified by ‘密码’;
    //允许所有ip连接(用通配符%表示)
    create user ‘新用户名’@‘%’ identified by ‘密码’;

  2. 为新用户授权
    //基本格式如下
    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 ‘新用户密码’ ;

  3. 设置用户操作权限
    /设置用户拥有所有权限也就是管理员
    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 ‘新用户名’;

  4. 删除用户
    DROP USER username@localhost;

  5. 修改后刷新权限
    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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值