这是安装 mysql
的基础教程。
参考资料
net start mysql 发生系统错误2
mysql下载与安装
安装mysql Install/Remove of the Service Denied!错误的解决办法
Ubuntu 安装mysql和简单操作
navicat连接阿里云mysql出现1045
MySql5.7创建数据库与添加用户、删除用户及授权
navicat连接阿里云mysql出现1045
MySQL新建用户,授权,删除用户,修改密码
远程连接阿里云服务器出现1045-Access denied for user ‘root’
navicat连接mysql时出现1045错误的解决方法
关于远程连接2003-can’t connect to MYSQL server on ‘’10060
Navicat远程连接阿里云服务器的mysql
利用Navicat连接阿里云服务器中MySQL
pymysql模块使用教程
Linux启动/停止/重启Mysql数据库的方法
Ubuntu 安装mysql和简单操作
Ubuntu 16.04 上安装 MySQL 5.7 教程
Ubuntu安装MySQL数据库
Ubuntu安装配置MySQL数据库
mysql不能存汉字
我们会分为两个系统的安装教程,一个是 win10
,一个是ubuntu16.04
ps:2021-7-25 直接到 mysql
官网下载 exe
文件,然后直接安装就行,不需要下面的配置。
搜索一下就出来了 「mysql download for windows
」
win10安装过程 绿色安装版本「推荐」
进入下载页面,选择下方图片方式。
我们选择系统,然后下载 zip
压缩文件,压缩文件下载小的那个就行,我们仅仅只是需要它的 server
而已。
之所以下载 zip
是因为我们可以选择安装路径,而安装包是默认下到 c
盘的。
配置过程
解压 MySQL
压缩包
将以下载的 MySQL
压缩包解压到自定义目录下,我的解压目录是:
D:\mysql
将解压目录下默认文件 my-default.ini
拷贝一份,改名 my.ini
复制下面的配置信息到 my.ini
保存
如果没有 my-default.ini
,可自己新建 my.ini
在 my.ini
复制下面内容
[client]
port=3306
default-character-set=utf8
[mysqld]
port=3306
character_set_server=utf8
#安装路径
basedir=D:\mysql
#数据路径
datadir=D:\mysql\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
D:\mysql\bin\mysqld.exe
添加环境变量
将 D:\mysql
D:\mysql\bin
添加到环境变量中
初始化密码
1 | mysqld --initialize --console |
可以输出相关的配置。包括密码。
将mysql注册为windows系统服务
从控制台进入到 MySQL
解压目录下的 bin
目录下:
输入服务安装命令「使用管理员模式」:
mysqld install MySQL --defaults-file="D:\mysql\my.ini"
安装成功后会提示服务安装成功。
- 注:
my.ini
文件放在MySQL
解压后的根目录下 - 移除服务命令为:
mysqld remove
启动MySQL服务
方法一:
启动服务命令为:net start mysql
方法二:
打开管理工具 服务,找到 MySQL
服务。
通过右键选择启动或者直接点击左边的启动来启动服务。
在安装 win10
的过程中确实有很多错误,但是搜搜都可以解决。
在这里先占个坑吧。
ubuntu 安装过程
ps: 2024-3-15
就使用 ubuntu20.04
别瞎折腾了,安装 8.0
1 | sudo apt-get update |
安装问题请查看。
ps: 2023-7-4 号
ubuntu22.04
安装的是 8.0
的 mysql
。刚安装的时候没有密码,如果登陆不行,试一试 sudo
登陆。
ps: 2021-9-1 号更新。
在后续使用的过程中,我发现直接安装 5.7
的 mysql
是非常简单的,只有两个步骤。
5.7
的供个人使用绰绰有余了。
#命令1
sudo apt-get update
#命令2
sudo apt-get install mysql-server
上面这两个步骤足以了。
下面的安装过程可能已经废弃
下面的安装过程可能已经废弃
下面的安装过程可能已经废弃
这个安装过程有很多坑,我记得不是太详尽了,只能靠大概的回忆,但是,遇到的问题都可以通过上面链接解决。
更为重要的是,我的安装平台是阿里云,这个坑是十分巨大的。
安装过程
输入
sudo apt-get update
sudo apt-get install mysql-server
也可能是 sudo apt-get install mysql-server mysql-client
在安装过程中需要你输入管理员(root
)密码
sudo mysql_secure_installation
上面的这个命令我没有执行,但是它的作用是 更改root
密码、移除MySQL
的匿名用户、禁止root
远程登录、删除test
数据库。使用上面的这些选项可以提高MySQL
的安全。
输入
sudo netstat -tap | grep mysql
这个命令是检查是否安装成功,如果看到有mysql 的socket处于 listen 状态则表示安装成功。
输入
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码
上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
管理命令
启动
service mysql start
service mysqld start (5.0版本是mysqld)
service mysql start (5.5.7版本是mysql)
停止
service mysql stop
重启
service mysql restart(5.5.7版本命令)
查看版本
status;
select version();
关于 mysql 的语法在这里就不介绍了,网上搜一大堆,但是优先推荐。
配置阿里云
阿里云中有很多坑,仅仅上面的配置,是不能用的,外界冶炼解不了。
下面的步骤,我不确定哪个有用,但最好都试试。
找到mysql配置文件并修改
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
#将bind-address=127.0.0.1注释
运行命令
service mysql start
mysql -uroot -p
(输入密码)
#进出mysql命令行操作界面输入一下
grant all privileges on *.* to 'root'@'%' identified by 'mysql(将mysql替换成密码)' with grant option;
flush privileges;
exit;
# .前第一个*是指数据库,代表所有数据库
第二个*指数据库对象,代表数据库中所有对象
'root'@'%' root是制定要授权的数据库用户
%代表允许登录的IP
mysql是你的数据库密码
重启mysql
service mysql restart
防火墙开启3306端口
sudo ufw allow 3306
# 可能阿里云禁了3306这个端口,所以开启一下吧
在外界我是用 navicat 连接的。
输入相关的连接参数后出现
经过查询时阿里云需要添加安全组规则。
也就是开启 3306 端口
0.0.0.0/0代表所有ip都可以访问
图是网上找的,但是也差不多。
出现1045-Access denied for user ‘root’
这是没给 root 授权,也就是上面的那个命令写错了,所以可以进入 mysql 的控制界面,也就是
mysql -u root -p
然后,执行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '这里写自己数据库的密码' WITH GRANT OPTION;
flush privileges;
然后连接发现仍然不成功。
听师弟的意思时,最好不要用 root 远程连接数据库,要自己创建一个用户。
先进入 mysql 的命令界面。
创建用户的命令
跟以往版本不同,MySQL5.7 mysql.user表没有password字段,这个字段改成了 authentication_string;
这里我们使用命令进行创建用户:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
如创建一个test用户,密码为test123,可以进行远程登录:
create user 'test'@'%' identified by 'test123';
username - 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,此处的”localhost”,是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将”localhost”改为”%”,表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录(即添加IP地址);
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
删除用户
如果用户创建错了,肯定要支持删除操作,使用命令:
DROP USER 'username'@'host';
授权
授权test用户有testDB数据库的某一部分权限:
grant select,update on testDB.* to test@'%' identified by 'test123';
授权test用户有testDB数据库的所有操作权限:
grant all privileges on testDB.* to 'test'@'%' identified by 'test123';
授权test用户拥有所有数据库的某些权限:
grant select,delete,update,create,drop on *.* to 'test'@'%' identified by 'test123';
privileges - 用户的操作权限,如select,delete,update,create,drop等(详细列表可自行百度),如果要授予所有的权限可使用all(参考第二种授权方式);% 表示对所有非本地主机授权,不包括localhost。
我一般用的是下面这个命令,即赋予 root 的权限。
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '这里写自己数据库的密码' WITH GRANT OPTION;
赋予完权限后执行
FLUSH PRIVILEGES;
如果出现下面这个错误,也是因为权限不足,即可以用上面的命令进行授权。
其它
我们如果要存储中文,首先就要用 utf-8 的方式构建数据库。
CREATE DATABASE <database_name> CHARACTER SET=UTF8;