最近,开始学习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无法启动 服务没有报告任何错误_百度经验