# Linux **CentOS** 1、下载MySQL官方的 Yum Repository https://dev.mysql.com/downloads/repo/yum/ ```bash wget -i https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm ``` 2、安装 ```bash #安装数据源 yum -y install mysql80-community-release-el8-1.noarch.rpm #检查数据源 yum repolist enabled | grep "mysql.*-community.*" #禁用CentOS8自带mysql模块 yum module disable mysql #安装数据库 yum -y install mysql-community-server ``` 3、配置密码 ```bash # 启动mysql systemctl start mysqld.service # 查看运行状态 systemctl status mysqld.service # 找到root用户初始随机密码 grep "password" /var/log/mysqld.log grep 'temporary password' /var/log/mysqld.log # 使用密码进入mysql mysql -u root -p # 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'wyd19940118(new password)'; #查看密码策略 SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | LOW | | validate_password.special_char_count | 1 | +--------------------------------------+-------+ #修改密码策略 set global validate_password.policy=LOW; //设置密码的验证强度等级为长度 set global validate_password.length=6; //密码验证长度重新赋值 0/LOW:只验证长度 1/MEDIUM:验证长度、数字、大小写、特殊字符 2/STRONG:验证长度、数字、大小写、特殊字符、字典文件 ``` 4、配置远程访问 ```bash #创建权限用户记录 create user 'root'@'%' identified by 'Wyd19940118@'; # 授权(命令开启的IP是192.168.0.1,如要开启所有的,用%代替IP) grant all privileges on *.* to 'root'@'%' with grant option; #grant all privileges on *.* to 'root'@'192.168.0.1' identified by 'password' with grant option; flush privileges; exit ``` 5、远程登录 ```bash mysql -h 39.106.250.172 -P 3306 -u root -p ``` 6、开放防火墙端口 ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload ``` 7、更改mysql编码格式(utf8mb4是utf8的超集,可不用改) ```bash # 登录 mysql -uroot -p # 查询状态 status # 退出 exit # 修改配置文件 vim /etc/my.cnf ========================================================= [client] default-character-set=utf-8 ... [mysqld] ... character-set-server=utf-8 collation-server=utf8_general_ci ========================================================= # 重启mysql服务 systemctl restart mysqld.service # 查询状态 status ``` **Ubuntu** 1、安装 ```bash # 包安装 sudo apt install mysql-server ``` 2、初始化配置 ```bash sudo mysql_secure_installation ``` ```bash #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、运行服务 ```bash systemctl start mysql.service ``` 4、配置 ```bash # 找到 bind-address 修改值为 0.0.0.0(如果需要远程访问) sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf #找到 bind-address 修改值为 0.0.0.0(如果需要远程访问) systemctl restart mysql.service sudo mysql -u root -p ##设置权限与密码 #使用mysql_native_password修改加密规则 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; #设置永不过期的用户密码 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; (不管用) #允许远程访问 mysql> UPDATE user SET host = '%' WHERE user = 'root'; #刷新cache中配置 刷新权限 mysql> flush privileges; #退出 mysql>quit; ######一个是本地root@localhost登录密码,一个是远程root@%(IP)登录的密码####### #修改本地登录密码(mysqladmin -u用户名 -p旧密码 password 新密码) mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; #修改远程登录密码 mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; #新增用户赋权并设置远程访问 #必须先创建用户(密码规则:mysql8.0以上密码策略限制必须要大小写加数字特殊符号) mysql> CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #授权 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; #修改加密方式 mysql> update user set plugin='mysql_native_password' where user='root' ``` 5、远程登录 ```bash mysql -h 39.106.250.172 -P 3306 -u root -p ``` # Windows平台client 1、下载msi https://dev.mysql.com/downloads/ 2、安装 # Windows平台server 1、下载zip安装包并解压缩到安装目录 https://dev.mysql.com/downloads/ 2、添加环境变量到系统path 3、配置初始化my.ini文件 在安装目录下创建my.ini文件。 ``` [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\\Program Files\\mysql-8.0.26-winx64 # 切记此处一定要用双斜杠\\,单斜杠我这里会出错,不过看别人的教程,有的是单斜杠。自己尝试吧 # 设置mysql数据库的数据的存放目录 datadir=D:\\Data\\MySQL\\data # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8 ``` 注意:其中的data目录不需要事先创建,下一步初始化工作中会自动创建 4、初始化数据库 ```bash # 在MySQL安装目录的 bin 目录下执行命令 mysqld --initialize --console ``` 执行完成后,会打印 root 用户的初始默认密码,在没有更改密码前,需要记住这个密码,后续登录需要用到。关快了,或者没记住,那也没事,删掉初始化的 data 目录,再执行一遍初始化命令,又会重新生成的。当然,也可以使用安全工具,强制改密码,用什么方法,自己随意。 5、安装服务 ```bash # 在MySQL安装目录的 bin 目录下执行命令 mysqld --install [服务名] ``` 后面的服务名可以不写,默认的名字为 mysql。当然,如果你的电脑上需要安装多个MySQL服务,就可以用不同的名字区分了。 ```bash # 需要管理员身份运行CMD net start mysql #启动服务 net stop mysql #停止服务 sc query mysql #查询服务状态 sc delete mysql -remove #删除服务 ``` 6、更改密码 ```bash # 在MySQL安装目录的 bin 目录下执行命令 mysql -u root -p # 这时候会提示输入密码,记住了上面第3.1步安装时的密码,填入即可登录成功,进入MySQL命令模式,默认端口3306。 # 在MySQL中执行命令: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; ``` 7、登录服务器 ```mysql mysql -u root -p password:123456 #-p后面不要加空格,-p为密码参数 ``` # Navicat工具 1、下载 官网安装包:https://www.navicat.com.cn/download/navicat-premium 破解工具:百度云 2、安装 断网安装,先打开破解工具,再进行安装,patch项选中安装的exe文件,生成密钥,注册激活。 # Workbench工具 1、下载安装包 https://dev.mysql.com/downloads/workbench/ 2、安装 直接next。 # SQLyog工具 1、下载安装包 2、安装 # 常用命令 ```sql #选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库 use School; #列出 MySQL 数据库管理系统的数据库列表 SHOW DATABASES; #显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库 SHOW TABLES; #显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息 SHOW COLUMNS FROM School; #显示数据表的详细索引信息,包括PRIMARY KEY(主键) SHOW INDEX FROM School; #输出Mysql数据库管理系统的性能及统计信息 SHOW TABLE STATUS [FROM School LIKE 'pattern'] \G; ```