220920_Manjaro上安装MySQL

Haoliang Tang Lv2

19年的大三冬季初学数据库时,在matebook win10上安装了微软的SQL Server。之后20年疫情宅家时,跟着一本小册子SQL必知必会(这本书的MySQL安装内容太旧了)还有网上教程,在老ideapad win7上安装了MySQL,但并不一定是最佳的安装方式,书上和网上教程并不完美适配,有冲突的地方。当时记得是在win7 cmd里运行sql命令,看得是真难受。当时也没有安装MySQL Workbench这样的图形界面工具。不过当时安装了mysql倒是在后来的夏季学期に役立った,不用再次安装了,就pip install个django的mysql,让django连上本地的mysql就好了。然后用了navicat的30天免费试用,撑过了夏季学期。


一些闲言碎语

读wikipedia上MySQL及び其作者Michael Widenius的词条,获得的一些豆知識

起初以为mysql的my是“我的”的意思,其实Its name is a combination of “My”, the name of co-founder Michael Widenius ‘s daughter My, and “SQL”, the abbreviation for Structured Query Language .原来是name after作者女儿的名字。そして,Widenius has three children – My, Max, and Maria – who inspired the names for MySQL , MaxDB and the MySQL-Max distribution, and MariaDB .他还用另外两个子女的名字来命名其他数据库。

MariaDB就是MySQL被Oracle收购后的一个开源复刻,与MySQL高度兼容。甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

聊聊作者Michael Widenius吧。芬兰人,Helsinki University of Technolog辍学(说来另一个赫尔辛基的狠人就是linus)。33岁时开始写mysql,1年后发布。

之后mysql被Sun收购,然后又被Oracle收购。

安装MySQL及初始化

查看软件仓库MySQL版本

1
pacman -Si mysql

安装MySQL

1
sudo pacman -S mysql

确认安装成功&mysql版本

1
mysql --version

or

1
mysqladmin --version

初始化MySQL

第一次使用前先初始化

安装mysql后的输出信息已经说了要这样初始化

1
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

==执行后会产生一个临时password==

error了,试试加上sudo

OK,刚才应该是权限不够操作/var/lib里的文件。sudo rm -rf mysql把刚才失败的文件夹删掉。加上sudo初始化后成功了。

用户名:root@localhost

临时口令:S4ypiYr8gt.S

启动MySQL服务

1
systemctl start mysqld

启动mysql服务后,secure installation

1
mysql_secure_installation

事实上我把这步放在修改完root口令后再执行

输入了新的root口令

这个好像会按照密码强度,设置密码,要8位以上。那就不弄了。

查看MySQL运行状态

1
systemctl status mysqld

修改root用户的password

initialize时生成了一个临时的口令,现在修改口令,就改为和linux的登录口令一样好了

mysql -u root -p,输入initialize时的临时口令,进入mysql

修改root口令

1
mysql> alter user 'root'@'localhost' identified by '新密码';

然后退出,再用新口令登录mysql试试

1
mysql> exit;
1
mysql -u root -p

输入新口令,成功登入

よし、到这里就算安装与初始化结束了

卸载MySQL

1
sudo pacman -Rsn mysql

注:-s参数删除没有被其他已安装软件包使用的依赖 -n参数删除相应的配置文件

然后删除/var/lib/mysql目录

1
sudo rm -rf /var/lib/mysql

MySQL简单使用

1.启动MySQL

若没有设置开机自动启动mysql服务,那么当要使用mysql时需手动启动服务 systemctl start mysqld

关掉mysql服务:systemctl stop mysqld 以减少内存占用

mysql服务没开启时,就没法连接mysql数据库

ちなみに、mariadb数据库的相关命令是:

1
2
3
4
systemctl start mariadb  #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动

2.登录MySQL

当MySQL服务已经运行时, 我们可以通过MySQL自带的客户端工具登录到MySQL数据库中, 打开命令行, 输入以下格式的命名:

1
mysql -h 主机名 -u 用户名 -p

参数说明:

  • -h: 指定客户端所要登录的MySQL主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略
  • -u: 登录的用户名
  • -p: 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项

如果我们要登录本机的MySQL数据库,只需要输入以下命令即可:

1
mysql -u root -p

3.管理MySQL的命令

注意: MySQL的SQL语句以分号 (;) 作为结束标识 大小写構いません

下面列举一些常用命令:

  • show databases;

    列出MySQL数据库管理系统的数据库列表

​ mysqlDBMS中最初是这4个数据库

  • use 数据库名;

    在连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以需要选择要操作的数据库

    use选择要操作的数据库,使用该命令后所有SQL命令都只针对该数据库

1
2
mysql> use RUNOOB;
Database changed
  • show tables;

    显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库

  • show columns from 表名;

    显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息

跟着菜鸟教程试了试增删改查语句,查询的语句select from where在终端中敲,输出会对不齐,不如在可视化界面里操作。

安装与使用MySQL Workbench

MySQL Workbench是专门面向mysql的可视化数据库管理工具,就是个DBMS的gui。也是甲骨文公司旗下的产品,属于mysql套件中的一部分。

安装mysql-workbench

1
sudo pacman -S mysql-workbench

启动程序可以终端敲mysql-workbench

进入程序后默认的连接一般是Local instance 3306。如果要自己新建一个连接的话,本地端口好像也是3306。

输入root口令后连接mysql

这个窗口从Adminisration调到Schemas,可以看到目前在mysql中的数据库。しかし、内置的4个数据库中只有sys显示了出来。RUNOOB是跟着菜鸟教程做的。

在图形界面里SQL命令不加;也能跑,终端是一定要有;的

https://blog.csdn.net/qq_40468936/article/details/114964412

https://zhuanlan.zhihu.com/p/422931126

230429更新 nodejs连接mysql数据库,报错Client does not support authentication protocol requested by server

尝试nodejs连接mysql数据库

1
npm install mysql

建了一个db.js文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var mysql = require("mysql")

var connection = mysql.createConnection({
host:"127.0.0.1",
port:3306,
user:"root",
password:"thl5160",
database:"idol"
})

connection.connect()

connection.query("select * from idol.group", function(error,results,fields){
if(error) throw error
console.log("results = ", results)
})

connection.end()

然后node db.js运行,报错‘Client does not support authentication protocol requested by server; consider upgrading MySQL client’

网上查到两个解决方法的帖子

https://stackoverflow.com/questions/51008807/nodejs-mysql-client-does-not-support-authentication-protocol

https://blog.csdn.net/airdark_long/article/details/82588064

Try change the password as below:

1
2
3
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'; 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your new password';
FLUSH PRIVILEGES;

再びnode db.js,输出成功

参考资料

MySQL Workbench Tutorial 11min左右讲了个通过右击table来自动生成sql语句

How to Use VS Code to Run SQL on a Database 用SQLToolsという插件

ArchLinux安装mysql

MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

Manjaro安装Mysql8.0(血泪篇)

How to install MySQL Workbench on Manjaro Linux 后半有详细的怎么使用workbench

  • Title: 220920_Manjaro上安装MySQL
  • Author: Haoliang Tang
  • Created at : 2022-09-20 00:00:00
  • Updated at : 2023-11-02 20:09:19
  • Link: https://hl-tang.github.io/2022/09/20/220920_Manjaro上安装MySQL/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments