数据库不能远程访问怎么办?
前言:PHP study中的MySQL数据库为了安全起见,默认是只允许数据库本地(自己的电脑)连接的,但有时候我们需要远程连接(别人的电脑),就需要如下修改:
首先:/phpstudy/mysql/bin/mysql -uroot -proot -h172.17.0.199; # 登录mysql
其次:使用grant all privileges on来更改用户对应某些库的远程权限
代码:grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;
例子:GRANT ALL PRIVILEGES ON *.* TO 'yonghuming'@'%' IDENTIFIED BY 'mima' WITH GRANT OPTION;
说明:上面代码表示用户名为“yonghuming” ,密码为:“mima” 的用户在任何主机下都可以远程连接这个数据库,之后重启数据库即可生效
Mysql如何新增用户并授权?
- 进入mysql终端
- 创建账号:create user istester[账号名] identified by ‘istester@321 [账号名] @[账号密码]’;
- 将数据库test赋给istester用户
授权命令格式:grant privilegesCode on dbName.tableName to username@host identified by "password";
例如: grant all privileges on istester.* to istester@'%' identified by 'istester@321';
注意:若想允许远程链接,见[数据库不能远程访问怎么办]。
- 查看权限授予的情况: show grants for istester;
如何使用mysql命令行导出远程数据库?
- 无需登录MySQL数据库:mysqldump -h172.17.1.68 -uroot -P33060 -p laravel>laravel.sql
- mysqldump -h数据库主机ip -u用户名 -P数据库开放端口号 -p密码 要导出的数据库>导出的文件名(默认在/bin目录下,可改)。
①导出整个数据库(包括数据库中的数据):mysqldump -u username -ppassword dbname >dbname.sql ;
②导出数据库中的数据表(包括数据表中的数据):mysqldump -u username -ppassword dbname tablename > tablename.sql;
③导出数据库结构(不包括数据,只有创建数据表语句):mysqldump -u username -ppassword -d dbname > dbname.sql;
④导出数据库中数据表的表结构(不包括数据,只有创建数据表语句):mysqldump -u username -ppassword -d dbname tablename > tablename.sql。
如何使用命令导入sql文件?
①在命令窗口输入mysql -uroot -proot(两个root依次表示登陆MySQL数据库的用户名和密码,根据自己的情况更改),接着输入show databases;
②接着输入use db_test(数据库中已经存在名为db_test的空的数据库,表示接下来要对这个db_test数据库进行操作)。
③source c:\Desktop\test.sql(表示将d盘桌面下的test.sql文件导入到db_test数据库下)。
出现问题:
MariaDB [(none)]> create database reser;
Query OK, 1 row affected (0.020 sec)//数据库创建成功
MariaDB [(none)]> use reser;
Database changed
MariaDB [reser]> source D:\reservation.sql;
ERROR 1049 (42000): Unknown database 'eservation.sql;'
解决:
输入成了反斜杠,改为/即可(source D:/ reservation.sql;)
总结:就是将一个导出的sql文件导入到另外一个空的数据库中。
如何修改MySQL隔离级别
- 命令
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
- 实例:
如:
//设置隔离级别为读未提交
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
查询MySQL的隔离级别
SELECT @@global.tx_isolation; //查询全局隔离级别
SELECT @@session.tx_isolation;//查询当前会话隔离级别
SELECT @@tx_isolation;//同上
MySQL如何添加外键约束?
创建com_student表
说明:
如果数据库使用的是MyISAM(ENGINE=MyISAM)引擎,外键会创建成功但是不会起作用(在命令行模式下,亲测有毒)。
即:如果com_student和com_class表都必须要用innodb引擎才可以设置外键。
create table com_student(
id int(11) not null auto_increment primary key,
stu_name varchar(100),
stu_age int(11),
stu_class_id int(11) not null,
/*com_student表中的stu_class_id是com_class表中id列的外键*/
foreign key(stu_class_id) references com_class(id)
)engine=innodb;
创建com_class表
create table com_class(
id int(11) not null auto_increment primary key,
class_name varchar(100) not null,
class_num varchar(100)
)engine=innodb;
添加数据测试外键:
/**步骤
*首先往com_class表中添加三条数据,表示有三个班级,id设置了自增所以其主键id分别为1、2、3
*其次往com_student表中添加学生,外键约束中存在id为3的班级但是没有id是5的班级,所以报错。
*/
insert into com_class(class_name,class_num) values("class01","c001");
insert into com_class(class_name,class_num) values("class02","c002");
insert into com_class(class_name,class_num) values("class03","c003");
insert into com_student(stu_name,stu_age,stu_class_id) values("minGe002",18,3);
insert into com_student(stu_name,stu_age,stu_class_id) values("minGe001",18,5);
MySQL删除外键约束碰到的问题
MySQL命令行修改密码
在终端命令行输入 mysqladmin -u root -p password “新密码” 回车 ,Enter password: 【输入原来的旧密码】
如何在MySQL的数据表中增加一列数据
如果想在一个已经建好的表中添加一列,可以使用如下代码:
1)向已有的表中加入新的一列:
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(255) not null;
2)将新的一列加入到表中指定列的后边:
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(255) not null after COLUMN_NAME;
3)将新的一列添加到表的第一列的位置:
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(255) not null first;