$ sudo apt-get install mysql-server mysql-client
$ sudo mysql_secure_installation #运行MySQL初始化安全脚本
# mysql_secure_installation脚本设置的东西有:更改root密码、移除MySQL的匿名用户、禁止远程登录、删除test数据库、重新加载权限表。
登录:$ mysql -h 主机名 -u 用户名 -p
退出登录: Ctrl+D
$ mysql -u root -p
mysql> show databases;
mysql> use mysql;
mysql> show tables;
mysql> show columns from user;
mysql> select user,host from user; #查看所有用户
创建新的用户:
mysql> create user 'username'@'hostname' identified by 'password';
# 其中,hostname可以是localhost、%、或者其他主机的IP,'%'表示任何主机上的用户,可进行远程登录,此时用户没有权限
# 如果出现错误 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 则运行以下命令查看密码级别
mysql> select @@validate_password_policy;
mysql> select @@validate_password_length;
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=3;
# 像这样设置密码的规则,也可以修改用户的密码,例如:
mysql> set password for 'root'@'localhost' = password('123');
mysql> set password for 'jay'@'%' = password('123');
mysql> set password = password('123');
# Windows用户首次登录需要重置密码
mysql> ALTER USER 'root'@'localhost' identified by '123456';
设置用户权限:
用户权限包括: select,update,delete,insert(表数据)、create,alter,drop(表结构)、references(外键)、create temporary tables(创建临时表)、index(操作索引)、create view,show view(视图)、create routine,alert routine,execute(存储过程)、all,all privileges(所有权限)
mysql> show grants; #查看当前用户(自身)权限
mysql> show grants for 'username'@'hostname'; #查看指定用户权限
mysql> grant select,insert,update,delete on database.table to 'username'@'hostname'; #给用户设置指定数据库表格的指定操作权限
mysql> grant all on *.* to 'username'@'hostname'; #给用户设置所有表格的所有操作权限
mysql> revoke all on *.* from 'username'@'hostname'; #撤销所有权限
数据库基本操作:
mysql> create database test; #创建数据库
mysql> use test;
mysql> create table students(id INT, name VARCHAR(20), email VARCHAR(20), 学历 VARCHAR(20)); #创建表格
mysql> insert into students(id,name,email,学历)
-> values(1,'张三','[email protected]','硕士研究生'),
-> (2,'李四','[email protected]','硕士研究生'); #插入数据
# 如果插入中文时提示错误:Incorrect string value,则需要将当前数据库设置为utf8编码,操作方式如下
mysql> set character_set_client = utf8;
mysql> set character_set_server = utf8;
mysql> set character_set_connection = utf8;
mysql> set character_set_database = utf8;
mysql> set character_set_results = utf8;
mysql> set collation_connection = utf8_general_ci;
mysql> set collation_database = utf8_general_ci;
mysql> set collation_server = utf8_general_ci;
mysql> show variables like '%char%'; #查看修改后的编码格式
mysql> select * from students; #查询表格内容
mysql> update students set email='[email protected]' where name='李四';
mysql> delete from students where name = '李四'; #删除表格中指定部分的内容
mysql> truncate table students; #清空表,删除表中的所有数据,但保留表的结构
mysql> drop table students; #彻底删除表
mysql> drop database test; #删除数据库
远程登录:
# 首先确保两台主机之间可进行网络通信,然后查看MySQL的3306端口是否对外开放
$ netstat -an | grep 3306
# 如果对外开放则显示 tcp6 0 0 :::3306 :::* LISTEN
# 如果不对外开放则显示 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
# 此时需要修改mysqld.cnf文件
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 将 bind-address = 127.0.0.1 这一行注释掉,然后重启MySQL再进行远程登录
$ sudo /etc/init.d/mysql restart
$ mysql -h 192.168.1.100 -u jay -p
删除用户:
mysql> DROP USER ‘username’@‘hostname’; #或者
mysql> DELETE FROM mysql.user WHERE user='username' AND host='hostname'; #然后刷新权限
mysql> FLUSH PRIVILEGES;
博主参考一些大神的博客整理了一个封装了部分MySQL函数的C++类,可从我的GitHub下载,运行示例会得到如下结果:
运行该示例之前你要先创建一个名叫“test”的数据库,且test库中至少有一个名叫“students”的表,不然可能会与上述结果有出入。还有,博主这里root用户的密码为123,如果不一样则需要修改,当然你也可以登录其他用户,不过要注意其他用户是否有示例中的操作权限。
参考文献:
[1] https://blog.csdn.net/u014453898/article/details/55064312
[2] https://dev.mysql.com/doc/refman/5.7/en/create-user.html
[3] https://www.cnblogs.com/gavin110-lgy/p/5773981.html
[4] https://www.cnblogs.com/47088845/p/5706496.html