MySQL 管理
启动及关闭 MySQL 服务器
Windows 系统下
启动 MySQL 服务器:
1、通过 "服务" 管理工具: 打开"运行"对话框(Win + R),输入 services.msc,找到"MySQL"服务,右击选择"启动"。
2、通过命令提示符: 打开命令提示符(以管理员身份),输入以下命令:
net start mysql
关闭MySQL服务器:
1、通过 "服务" 管理工具:同样打开"运行"对话框,输入 services.msc,找到 "MySQL" 服务,右击选择"停止"。
2、通过命令提示符: 打开命令提示符(以管理员身份),输入以下命令:
net stop mysql
Linux 系统下
1、启动 MySQL 服务:
使用 systemd命令(适用于大多数现代 Linux 发行版,如 Ubuntu、CentOS 等):
sudo systemctl start mysql
使用 service 命令(在一些较旧的发行版中):
sudo service mysql start
2、关闭 MySQL 服务:
使用 systemd:
sudo systemctl stop mysql
使用 service 命令:
sudo service mysql stop
3、重启 MySQL 服务:
使用 systemd:sudo systemctl restart mysql
使用 service 命令:
sudo service mysql restart
4、检查 MySQL 服务状态:
使用 systemd命令:
sudo systemctl status mysql
使用 service 命令:
sudo service mysql status
Mac OS 系统
启动 MySQL 服务:
使用命令行:
sudo /usr/local/mysql/support-files/mysql.server start
关闭 MySQL 服务:
使用命令行:
sudo /usr/local/mysql/support-files/mysql.server stop
重启 MySQL 服务:
使用命令行:
sudo /usr/local/mysql/support-files/mysql.server restart
检查 MySQL 服务状态:
使用命令行:
sudo /usr/local/mysql/support-files/mysql.server status
以上命令中,mysql 可能会因为安装路径或版本的不同而有所变化。
在 Mac OS 中,MySQL 的安装路径通常是 /usr/local/mysql/,因此启动和关闭 MySQL 服务需要使用这个路径下的 mysql.server 脚本。
MySQL 用户设置
在 MySQL 中,用户设置包括创建用户、设置权限、管理用户等操作。以下是一些常用的 MySQL 用户设置操作,包括创建用户、设置权限、查看和删除用户等。
创建用户
要创建一个新用户,你可以使用以下 SQL 命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username
:用户名。host
:指定用户可以从哪些主机连接。例如,localhost
仅允许本地连接,%
允许从任何主机连接。password
:用户的密码。
实例
授权权限
创建用户后,你需要授予他们访问权限,使用 GRANT 命令来授予权限:
GRANT privileges ON database_name.* TO 'username'@'host';
privileges
:所需的权限,如ALL PRIVILEGES
、SELECT
、INSERT
、UPDATE
、DELETE
等。database_name.*
:表示对某个数据库或表授予权限。database_name.*
表示对整个数据库的所有表授予权限,database_name.table_name
表示对指定的表授予权限。TO 'username'@'host'
:指定授予权限的用户和主机。
实例
刷新权限
授予或撤销权限后,需要刷新权限使更改生效:
FLUSH PRIVILEGES;
查看用户权限
要查看特定用户的权限,可以使用以下命令:
SHOW GRANTS FOR 'username'@'host';
实例
撤销权限
要撤销用户的权限,使用 REVOKE 命令:
REVOKE privileges ON database_name.* FROM 'username'@'host';
实例
删除用户
如果需要删除用户,可以使用以下命令:
DROP USER 'username'@'host';
实例
修改用户密码
要修改用户的密码,可以使用 ALTER USER 命令:
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
实例
修改用户主机
要更改用户的主机(即允许从哪些主机连接),可以先删除用户,再重新创建一个新的用户。
实例
DROP USER 'john'@'localhost';
-- 重新创建用户并指定新的主机
CREATE USER 'john'@'%' IDENTIFIED BY 'password123';
创建用户时指定权限
在创建用户时,也可以同时授予权限(在 MySQL 8.0.16 及更高版本):
实例
GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';
/etc/my.cnf 文件配置
/etc/my.cnf 文件是 MySQL 配置文件,用于配置 MySQL 服务器的各种参数和选项。
一般情况下,你不需要修改该配置文件,该文件默认配置如下:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock [mysql.server] user=mysql basedir=/var/lib [safe_mysqld] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
在配置文件中,你可以指定不同的错误日志文件存放的目录,一般你不需要改动这些配置。
/etc/my.cnf 文件在不同的系统和 MySQL 版本中可能有所不同,但是一般包含以下几个部分:
1. 基本设置
basedir
: MySQL 服务器的基本安装目录。datadir
: 存储 MySQL 数据文件的位置。socket
: MySQL 服务器的 Unix 套接字文件路径。pid-file
: 存储当前运行的 MySQL 服务器进程 ID 的文件路径。port
: MySQL 服务器监听的端口号,默认是 3306。
2. 服务器选项
bind-address
: 指定 MySQL 服务器监听的 IP 地址,可以是 IP 地址或主机名。server-id
: 在复制配置中,为每个 MySQL 服务器设置一个唯一的标识符。default-storage-engine
: 默认的存储引擎,例如 InnoDB 或 MyISAM。max_connections
: 服务器可以同时维持的最大连接数。thread_cache_size
: 线程缓存的大小,用于提高新连接的启动速度。query_cache_size
: 查询缓存的大小,用于提高相同查询的效率。default-character-set
: 默认的字符集。collation-server
: 服务器的默认排序规则。
3. 性能调优
innodb_buffer_pool_size
: InnoDB 存储引擎的缓冲池大小,这是 InnoDB 性能调优中最重要的参数之一。key_buffer_size
: MyISAM 存储引擎的键缓冲区大小。table_open_cache
: 可以同时打开的表的缓存数量。thread_concurrency
: 允许同时运行的线程数。
4. 安全设置
skip-networking
: 禁止 MySQL 服务器监听网络连接,仅允许本地连接。skip-grant-tables
: 以无需密码的方式启动 MySQL 服务器,通常用于恢复忘记的 root 密码,但这是一个安全风险。auth_native_password=1
: 启用 MySQL 5.7 及以上版本的原生密码认证。
5. 日志设置
log_error
: 错误日志文件的路径。general_log
: 记录所有客户端连接和查询的日志。slow_query_log
: 记录执行时间超过特定阈值的慢查询。log_queries_not_using_indexes
: 记录未使用索引的查询。
6. 复制设置
master_host
和master_user
: 主服务器的地址和复制用户。master_password
: 复制用户的密码。master_log_file
和master_log_pos
: 用于复制的日志文件和位置。
管理MySQL的命令
以下列出了使用Mysql数据库过程中常用的命令:
USE 数据库名 :
选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。mysql> use RUNOOB; Database changed
SHOW DATABASES:
列出 MySQL 数据库管理系统的数据库列表。mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | RUNOOB | | cdcol | | mysql | | onethink | | performance_schema | | phpmyadmin | | test | | wecenter | | wordpress | +--------------------+ 10 rows in set (0.02 sec)
SHOW TABLES:
显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。mysql> use RUNOOB; Database changed mysql> SHOW TABLES; +------------------+ | Tables_in_runoob | +------------------+ | employee_tbl | | runoob_tbl | | tcount_tbl | +------------------+ 3 rows in set (0.00 sec)
SHOW COLUMNS FROM 数据表:
显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。mysql> SHOW COLUMNS FROM runoob_tbl; +-----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+-------+ | runoob_id | int(11) | NO | PRI | NULL | | | runoob_title | varchar(255) | YES | | NULL | | | runoob_author | varchar(255) | YES | | NULL | | | submission_date | date | YES | | NULL | | +-----------------+--------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)
SHOW INDEX FROM 数据表:
显示数据表的详细索引信息,包括PRIMARY KEY(主键)。mysql> SHOW INDEX FROM runoob_tbl; +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | runoob_tbl | 0 | PRIMARY | 1 | runoob_id | A | 2 | NULL | NULL | | BTREE | | | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 1 row in set (0.00 sec)
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] \G:
该命令将输出Mysql数据库管理系统的性能及统计信息。mysql> SHOW TABLE STATUS FROM RUNOOB; # 显示数据库 RUNOOB 中所有表的信息 mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'; # 表名以runoob开头的表的信息 mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G; # 加上 \G,查询结果按列打印
Gif 图演示:
oocarain
ooc***[email protected]
记录 MySQL 学习过程遇到的问题。
系统:win32 位
MySQL 版本:5.7.17-log
MySQL 语法对大小写不敏感,但是大写更容易看出。
一、启动关闭MySQL服务
1【开始菜单】搜索 services.msc 打开 windows【服务管理器】,可以在此开启关闭 MySQL 服务。
2 在 cmd 中使用命令:
遇到net命令无法识别,如下:
这是环境变量没有配置的原因,究竟是哪一个文件的环境变量没有配置呢?
是 C:\windows\system32\ 这个路径下的 net.exe 没有配置环境变量
现切换到这个路径下试一下可不可以使用 net 命令:
在 Powershell 需要使用
.\net stop mysql
关闭服务。
在 cmd 中可以直接使用
启动服务。
将c:\windows\system32添加到系统的Path中后:
成功!!!
oocarain
ooc***[email protected]
一条鱼
ili***[email protected]
参考地址
用 insert 添加用户时,可能会报错:
my-default.ini中有一条语句:
指定了严格模式,为了安全,严格模式禁止通过 insert 这种形式直接修改 mysql 库中的 user 表进行添加新用户
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
将 STRICT_TRANS_TABLES 删掉之后即可使用 insert 添加
一条鱼
ili***[email protected]
参考地址
Morrison
982***[email protected]
参考地址
添加新用户建议 GRANT 命令
一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。
或者,用一条 MySQL 命令来替代:
二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。
grant 创建、修改、删除 MySQL 数据表结构权限。
grant 操作 MySQL 外键权限。
grant 操作 MySQL 临时表权限。
grant 操作 MySQL 索引权限。
grant 操作 MySQL 视图、查看视图源代码 权限。
grant 操作 MySQL 存储过程、函数 权限。
三、grant 普通 DBA 管理某个 MySQL 数据库的权限。
其中,关键字 privileges 可以省略。
四、grant 高级 DBA 管理 MySQL 中所有数据库的权限。
五、MySQL grant 权限,分别可以作用在多个层次上。
1. grant 作用在整个 MySQL 服务器上:
2. grant 作用在单个数据库上:
3. grant 作用在单个数据表上:
这里在给一个用户授权多张表时,可以多次执行以上语句。例如:
4. grant 作用在表中的列上:
5. grant 作用在存储过程、函数上:
六、查看 MySQL 用户权限
查看当前用户(自己)权限:
查看其他 MySQL 用户权限:
七、撤销已经赋予给 MySQL 用户权限的权限。
revoke 跟 grant 的语法差不多,只需要把关键字 to 换成 from 即可:
八、MySQL grant、revoke 用户权限注意事项
1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 grant option这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。
注意:创建完成后需要执行 FLUSH PRIVILEGES 语句。
Morrison
982***[email protected]
参考地址
halo
g51***vip.qq.com
参考地址
InnoDB 存储引擎
MyISAM 存储引擎
MEMORY 存储引擎
存储引擎的选择
halo
g51***vip.qq.com
参考地址
TEST
791***[email protected]
参考地址
添加用户:
报以下的错误 ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 错误
错语原因:
mysql 用户表的中某些字段不能为空,没有默认值,其实是操作错误,mysql 添加用户是不能这样直接 insert user 表的。
解决方法:
正确的添加用户方法:
用户:user01,密码:123456,这样就添加了一个新的用户,不会出以上的错误了。
TEST
791***[email protected]
参考地址
laowang
zhu***[email protected]
MySQL 8.0.11 版本之后创建用户方法如下:
授予账户权限的方法如下:
授予所有权限:
查看用户权限:
laowang
zhu***[email protected]
派遣员工
619***[email protected]
会出现:
去掉分号就可以了,\G 和分号 ; 的作用相似,两者取其一即可。
派遣员工
619***[email protected]
Joseph Lin
jos***[email protected]
看到这篇和配置有关系内容,缺少了一处默认编码的提示,所以这里补充一下,看个人按需配置,仅供参考。
在 Ubuntu 18.04 上,使用 APT 安装之后的默认配置文件为:
修改默认为 utf-8 编码只有关键这一行配置:
这一行放在 [mysqld] 下。
当然,我也是 MySQL 数据库初学者,我的配置文件目前长这样:
修改完 /etc/mysql/my.cnf 这个配置文件后重启 mysql:
可以确认一下:
参考地址:
https://jingyan.baidu.com/article/64d05a021cd8a9de55f73be4.html
https://blog.csdn.net/qq_34694342/article/details/86703068
https://www.liaoxuefeng.com/wiki/1016959663602400/1017802264972000
Joseph Lin
jos***[email protected]