https://blog.csdn.net/liu_dong_mei_mei/article/details/104010567
前言
在安装MySQL的时候会遇到很多问题,博客上有很多解决问题的办法,在这里我附上一些链接,遇到问题的朋友们可以阅读参考哈~本文主要针对于刚接触数据库的小白,来安装MySQL数据库。目前官网上的MySQL版本有5.5,5.6,5.7和8,在开发的时候我们一般要选择比最新版低1到2个版本的,因此我选择了5.7作为要安装的数据库
1.下载步骤
2.配置环境变量
- 系统—>高级系统设置—>环境变量—>系统变量
- 点击新建,变量名为:MYSQL_HOME:
E:\Program Files\Mysql\mysql-5.7.29-winx64
- 解压后
mysql-5.7.29-winx64
文件夹所在位置。 - 编辑Path,添加
;%MYSQL_HOME%\bin
3.配置my.ini文件
mysql-5.7.27-winx64目录下新建my.ini文件
[mysqld]
#端口号
port = 3306
#mysql-5.7.27-winx64的路径
basedir=E:\Program Files\Mysql\mysql-5.7.27-winx64
#mysql-5.7.27-winx64的路径+\data
datadir=E:\Program Files\Mysql\mysql-5.7.27-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
- 以管理员的身份运行CMD命令行窗口
- 进入
.\Mysql\mysql-5.7.27-winx64\bin
目录下 - 输入
mysqld -install
Service successfully installed,证明安装成功
Install of the Service Denied,则说明没有以管理员权限来运行cmd - 输入命令:
mysqld --initialize
如果下面的错,修改my.ini 的路径中的单反斜线改为双反斜线
再输入net start mysql
提示启动服务成功。
5.设置MySQL密码
- 主要解决
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)
的问题 - 停止MySQL服务,输入命令行
net stop mysql
- 在
\mysql-5.7.27-winx64
目录下找到my.ini
,在[mysqld]
字段下任意一行添加skip-grant-tables
- 重启MySQL,输入启动命令:
net start mysql
,出现以下提示证明MySQL启动成功 - 再输入命令
mysql -u root -p
,不需要输入密码,直接回车 update user set authentication_string=password("xxxxxx") where user="root";
xxxxxx是你设置的新密码,敲击回车后若出现以下信息,证明修改成功!- 手动停止MySQL服务,在win10搜索栏内输入
services.msc
,找到MySQL。点击右键,然后点击停止即可。然后在刚刚的my.ini
文件中删除skip-grant-tables
这一行,保存关闭。 - 再次启动cmd(管理员身份),输入启动命令:
net start mysql
,再输入mysql -u root -p
,再输入你刚刚设置的密码,出现以下信息证明设置成功! - 然后输入命令行
use mysql
验证一下,结果报错:既然没有重置密码,那就重置一下呗
键入命令行alter user user() identified by "xxxxxx";
我的密码是123456,因此我键入alter user user() identified by "123456";
回车! - 再次输入命令行
use mysql
验证一下,成功!
mysql中skip-grant-tables无效
1.以管理员的身份打开cmd,关掉MySQL服务:net stop mysql
2.在mysql bin目录下输入:mysqld --skip-grant-tables
3.再打开一个cmd窗口,输入mysql -u root -p
4.输入:use mysql
5.在输入:update user set authentication_string=password("123456") where user="root";
6.cmd:exit
7.cmd:net start mysql
8.cmd:use mysql
若报错,alter user user() identified by "123456";
再次输入use mysql
mysql服务的启动和停止
net stop mysql
net start mysql
登陆mysql
#注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP
mysql -u 用户名 -p 用户密码
增加新用户
grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
#增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";
#如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by "";
操作mysql数据库
#显示数据库列表
show databases;
#显示库中的数据表
use mysql;
show tables;
#显示数据表的结构
describe 表名;
#建库和删库
create database 库名;
drop database 库名;
#建表:
use 库名;
create table 表名(字段列表);
drop table 表名;
#清空表中记录:
delete from 表名;
#显示表中的记录:
select * from 表名;
第五招、导出和导入数据
#导出数据,将数据库test数据库导出到mysql.test文件,后者是一个文本文件
mysqldump --opt test > mysql.test
#就是把数据库dbname导出到文件mysql.dbname中
mysqldump -u root -p123456 --databases dbname > mysql.dbname
#导入数据:
mysqlimport -u root -p123456 < mysql.dbname。
#文本数据导入数据库,文本数据的字段数据之间用tab键隔开。
use test;
load data local infile "文件名" into table 表名;
#使用SHOW语句找出在服务器上当前存在什么数据库:
SHOW DATABASES;
#创建一个数据库MYSQLDATA
CREATE DATABASE MYSQLDATA;
#选择创建的数据库 按回车键出现Database changed 时说明操作成功!
USE MYSQLDATA;
#查看数据库中的表
SHOW TABLES;
#创建数据库表
CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
#显示表的结构:
DESCRIBE MYTABLE;
#往表中加入记录
insert into MYTABLE values ("hyq","M");
#用文本方式将数据装入数据库表中(例如D:/mysql.txt)
LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;
#导入.sql文件命令(例如D:/mysql.sql)
use database;
source d:/mysql.sql;
#删除表
drop TABLE MYTABLE;
#清空表
delete from MYTABLE;
#更新表中数据
update MYTABLE set sex="f" where name='hyq';
windows下mysql数据库导入导出
导出数据库:
1、windows下cmd打开命令行
2、cd 到MySQL的安装目录的bin 目录,如果bin目录添加到环境变量中不需要切换到bin目录
3、导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
比如在命令行中输入命令 mysqldump -u root -p person >d:\person.sql
(输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
4、执行完成后,会看到d盘中有person.sql 文件
导入数据库:
1、进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
2、新建一个数据库,这时是空数据库,如新建一个名为person的目标数据库
3,输入:mysql>use 目标数据库名
如我输入的命令行:mysql>use person;
4,导入文件:mysql>source 导入的文件名;
如我输入的命令行:mysql>source d:/person.sql;
centos中mysql安装、配置、导入数据库
Mysql5.7.11安装 - yum方式:
1、mysql官方网站下载mysql yum repo文件(rpm文件),安装后在系统/etc/yum.repo.d目录多出2个文件
2、yum search mysql
3、yum install mysql-community-server.x86_64
(mysql社区版)
新安装mysql后无root密码无法登陆问题:
1.systemctl stop mysqld.service
关闭mysql服务
2.vi /etc/my.cnf
在mysqld下面添加 skip-grant-tables
,重启mysql服务systemctl start mysqld.service
3.登录mysql,mysql -u root
不用密码直接回车
4.输入 update user set authentication_string=password('密码') where User='root' and Host='localhost';
5.成功后输入 flush privileges;
6.exit退出mysql
7.vi /etc/my.cnf
把 skip-grant-tables
一句删除保存退出重启mysql服务
8.重新登录mysql,mysql -u root -p
回车 输入你刚才填写的密码
9.登录成功后你的操作可能会出现如下两句
Your password does not satisfy the current policy requirements
You must reset your password using ALTER USER statement before executing this statement.
进入mysql执行命令:
alter user 'root'@'localhost' identified by 'password'
=====================
Show databases;
Create dbname;
Use dbname;
Set names utf8;
Mysql -u root -p dbname<script.sql;
本地sql文件导入mysql数据库
mysql中配置my.ini
interactive_timeout = 120
wait_timeout = 120
max_allowed_packet = 32M
导入sql运行命令
source "路径名"+/mytest.sql
进入对应的数据库,example: test
use test;
source C:/Users/eason\Desktop/mytest.sql
当我用Navicat查看用户表的时候,发现乱码。
排查:
1、my.ini中设置默认编码格式utf-8
2、导入库是设置支持utf-8
3、命令行登录数据库需要支持utf-8
可以查看用户表,是否中文。
使用navicat导入sql文件
一、打开navicat,打开连接,右击连接名(如果新建连接,需要使用对应数据库的ip地址和密码,本机的是地址localhost,密码是自己mysql数据库的密码),选择新建数据库,数据库名要和想要导入的文件名一样(这种情况针对的是sql文件是直接由整个数据库导出的一个sql文件,如果表导出的sql文件,应该是随便命名数据库的名字,表名应该是和需要导入的文件名字相同(第二种情况没有亲自试过))。
二、右击建好的数据库,选择运行SQL文件,在出现的页面中选择要导入的SQL文件。然后点击开始,等待导入结束。
三、在导入结束后,点击关闭,此时可能数据库中还没有导入的表,右击数据库名字或者表选择刷新,应该就出来了。(最后记不太清是右击哪个,点击刷新,试一下一般就可以出来了,亲测有效)。之后又试了一次是右击表的名字,点击刷新。
Navicat for Mysql 是应用比较多的mysql的视图管理工具。下面记录下Navicat for mysql如何导入sql文件。
首先创建一个数据库(因为我导入的sql文件只有建表和插入数据的语句)。
在连接名处点击右键,新建数据库。
输入数据库的名称,这里我选择utf-8编码,因为我安装的mysql时有特意选择utf-8。
相关推荐:《Navicat for mysql使用图文教程》
双击你新建的数据库,使之显示绿色状态。然后在该数据库的名称上面点击右键,选择运行sql文件。
然后点击如图所示的图标来查找你要运行的sql文件。
注意当你要运行的sql文件有多个的时候,一定要注意它们的先后顺序。比如先有建表的sql,才有插入数据的sql。
选中之后,点击确定,它就会运行sql语句。如果成功,会有如下相关的信息显示,然后点击关闭。
此时点击你的运行sql文件的数据库,然后F5刷新,就能看到sql的效果了(比如有表结构和数据)。
查看修改mysql编码方式让它支持中文(gbk或者utf8)
MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8。
1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:
>show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;
其中,character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;
只要保证以上四个采用的编码方式一样,就不会出现乱码问题。
另一个查看数据库编码的命令:
>show variables like ‘collation%';
2、linux系统下,修改MySQL数据库默认编码的步骤为:
ü 停止MySQL的运行
/etc/init.d/mysql start (stop) 为启动和停止服务器
ü MySQL主配置文件为my.cnf,一般目录为/etc/mysql
var/lib/mysql/ 放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹
ü 当我们需要修改MySQL数据库的默认编码时,需要编辑my.cnf文件进行编码修改,在linux下修改mysql的配置文件my.cnf,文件位置默认/etc/my.cnf文件
找到客户端配置[client] 在下面添加
default-character-set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 默认字符集为utf8
init_connect=‘SET NAMES utf8’ (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
修改好后,重新启动mysql 即可,重新查询数据库编码可发现编码方式的改变:
>show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
此方法用于标准mysql版本同样有效,对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf
3、windows系统下可以删除MySQL数据库,并重新安装,在安装过程中可以直接用Mysql Server Instance Config Wizard 进行设置
4、当MySQL数据库服务器已经有数据不适合删除重装时,可以个别指定数据库的编码方式。MySQL指定编码的方式是非常灵活并多样化的,可以指定表级别的编码,行级别编码,甚至可以指定字段级别的编码。
以下示例给出创建数据库时指定编码的两种方式:
1)CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;
2)create database if not exists netctoss default character set utf8;
5、如果你采用的是外部接入的方式,可以在连接中确定请求的编码格式如:jdbc:mysql://localhost:3306 /mysql?useUnicode=true&characterEncoding=utf-8(注意:不要出现任何空格,否则出错)
6、执行脚本:指定编码格式set names gbk(注意,不是UTF-8)可以修改
执行前:
执行后:
从执行命令前后可知,set names gbk只可以修改character_set_client、character_set_connection、 character_set_results的编码方式,并且这种修改是窗口级别的,只针对本窗口有效,打开另外一个窗口修改无效。也可发现数据库底层的编码方式没有改变,插入数据后还是以utf8编码方式保持。