昨晚想给下学期数据库课的学习,在centos下搭一个实践环境。折腾到1点半差不多吧。先后遇到这几点值得记的地方。

  • 首先我是想解决掉root用户密码一直登录不上的问题。按照网上查来的教程,是如下操作:

先用

killall -TERM mysqld

关掉mysql进程。

然后

mysqld_safe --skip-grant-tables &

进入MySQL的安全模式,并跳过授权表检测(不用密码登录)。

然后

mysql

进入mysql命令行。

执行

UPDATE mysql.user SET authentication_string=PASSWORD('new_pwd') WHERE user='root';

修改掉root密码。

相对网上的教程,多加一步:

DELETE FROM mysql.user WHERE user='';

把空用户删除,经自己测试,不加这条语句,修改完成后还是会出现间歇性无法登录的情况。

之后是

FLUSH PRIVILEGES;
QUIT;

把权限设置刷新,之后退出安全模式。

shell下执行:

service mysqld restart

重启MySQL服务。

之后应该能正常使用-u[user_name] -p[pwd]登录root帐号了。

  • 记导入sql文件的操作(假设在root用户下,并且sql文件里没有CREATE语句):
CREATE DATABASE [db_name];

新建一个数据库。

USE [db_name];

把当前数据库切换到刚刚建立的数据库上。(如果sql文件里有CREATE语句,从下一步执行就好)

SOURCE [.sql file path];

让数据库从sql文件中获取信息。

SHOW TABLES;

看一下刚才导入的sql文件里含哪些表。

CREATE USER 'user_name'@'host_name' IDENTIFIED BY 'pwd';

新建一个希望用于访问数据库的用户。注意host_name,如果只希望这个用户能本地访问,则填localhost。如果希望能远程登录,则填%。

GRANT [privileges] ON [database_name].[table_name] TO '[user_name]'@'[host_name]';

希望赋予该用户所有操作数据库的权限,则填ALL。数据库名,表名都可以填*,表示赋予操作*代表的所有条目的权限。

FLUSH PRIVILEGES;

刷新权限表。

之后即可使用该用户登录,并对该用户对应的数据库进行操作了。