未分类

mysql - 初见mysql8.0之windows中的安装

最近,开始学习mysql,按照网站的教程,遇到各种坑,不知道是教程讲的原因还是我理解有问题,不过经过一番摸索还是解决了,到https://dev.mysql.com/downloads/mysql/下载最新版mysql(当前最新版mysql-8.0.13-winx64.zip),下载后解压到你想放置的文件夹,在文件夹内新建my.ini填入一下内容(根据你的路径修改)

1
2
3
4
5
6
7
8
9
10
[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci
default_authentication_plugin=mysql_native_password
basedir=D:/mysql-8.0.11-winx64
datadir=D:/mysql-8.0.11-winx64/data
default-time-zone = '+8:00'

其中有几行用于改变数据库编码方式,以防导入数据库时出现ERROR 1366 (HY000) at line 55: Incorrect string value: '\x93' for column 'courseName' at row 1这种错误

default-time-zone = '+8:00'用来避免使用驱动包连接mysql8时报时区错误(有时候通过在url中添加?serverTimezone=GMT%2B8无法解决问题)

data目录不需要自己创建,路径需要用反斜线/

以管理员身份打开命令行,进入到D:/mysql-8.0.11-winx64/bin目录

依次输入以下命令:

1
2
3
4
5
mysqld -install # 安装mysql
mysqld --initialize-insecure # 初始化,此处会自动生成data目录,如果mysql下又data目录,需要手动删除
net start mysql # 启动mysql服务
# 如果启动成功,继续输入下面的命令,注意:此处使用的是8.0版本,5.27的版本默认有随机密码,具体百度查询一下
mysql -u root -p # 进入mysql, 命令执行后,需要输入密码,直接回车即可

另注:网上有的说有初始随机密码的话需要加上skip-grant-tables,这个在有的版本中会导致mysql启动之后会立即停止,比如这里的8.0版本,不过这里没有密码,也不需要添加这一句

show global variables like 'port';

mysql基本命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
mysql -uroot -p # 进入数据库,如果没有设置密码直接回车,如果又密码输入即可,如果提示密码错误,可能初次安装有随机密码,百度一下随机密码的位置



show databases; # 显示当前所有的数据库


# 创建数据库
create database db01;



# 创建表
use db01;
create table user(user_id varchar(10) not null,
user_name varchar(10) not null,
user_pass varchar(10) not null,
primary key (user_id,user_name))charset=utf8;


# 向表中插入数据
insert into user values('23','张三','123456');
select * from user; # 从user表中查询所有数据



# 导出数据库
# https://stackoverflow.com/questions/17666249/how-to-import-an-sql-file-using-the-command-line-in-mysql
# https://dev.mysql.com/doc/refman/8.0/en/mysqldump-sql-format.html
mysqldump -uroot -p db01 > d:/db01.sql




# 导入数据库/修改数据库名称
# https://dev.mysql.com/doc/refman/8.0/en/reloading-sql-format-dumps.html
mysql -uroot -p
create database db02; # 这样导入的时候,数据库名称就被修改了,但数据库非常庞大,这种不适合额。
exit
# 或者以上三步改为mysqladmin -u username -p password create db02; # 如果没有密码去掉-p选项即可
mysql -uroot -p db02 < d:/db01.sql




# 查看当前登陆数据库的用户
select user();




# 查看数据库版本
select version();





# 更改用户密码,如果没有旧密码,-p选项可以省略
mysqladmin -uroot -p 旧密码 password 新密码


# 重启数据库(需要管理员权限打开cmd)
net stop mysql
net start mysql




# 查看数据库服务运行的端口号
show global variables like 'port';




# 修改端口号
在my.ini文件的mysqld组中添加一行port=3506
重启mysql
net stop mysql
net start mysql
mysql -u root -p -P 3506




# mysql教程
https://github.com/jaywcjlove/mysql-tutorial/blob/master/chapter2/2.3.md



# 恢复误删除的数据库
https://www.cnblogs.com/kevingrace/p/5904800.html




# 修改表的编码为utf8
alter table table_name convert to character set utf8;


# 查看表结构
desc table_name;



# 删除数据库
drop database database_name;


# 删除表
drop table table_name;
创建和调用存储过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 命令行进入数据库
mysql -u root -p

# 创建数据库
create database `db01` character set 'utf8';
# 创建表
use db01;
create table user(user_id varchar(10) not null,
user_name varchar(10) not null,
user_pass varchar(10) not null,
primary key (user_id,user_name)) charset=utf8;
# 向表中插入数据
insert into user values('23','张三','123456');
select * from user; # 从user表中查询所有数据


# 临时修改结束符号为$$
delimiter $$
# 创建存储过程,输入参数的类型要保持一致
create procedure delete_user_id(IN id varchar(10), OUT result varchar(10))
BEGIN
delete from user where user_id=id;
if(row_count()>0) then
set result='success';
else
set result='failure';
end if;
END $$

# 修改结束符号为;
delimiter ;

# 调用存储过程
set @result=''; # 这里和一般的语言语法不一致,返回值放在参数里面接收
call delete_user_id(23,@result);

# 查看结果
select @result;

# 如果使用navicat可视化界面,直接写入函数调用指定即可


# 存储过程
https://www.cnblogs.com/geaozhang/p/6797357.html

参考:mysql无法启动 服务没有报告任何错误_百度经验

分享到