刘封本是罗侯寇氏之子,长沙郡刘氏的外甥,刘备投靠荆州刺史刘表后,暂时安居于荆州。当时刘备尚未有儿子,于是便收刘封做了儿子,但不久后甘夫人又为刘备生育了阿斗。及后刘备入蜀,从暇萌关反攻刘璋时,留守荆州的诸葛亮等人率军增援。刘封当时年仅二十余岁,但已武力过人,所过之地战无不克。益州平定后,刘备任命刘封为副军中郎将。
陈寿在《三国志》中是这样写道:及先主入蜀,自葭萌还攻刘璋,时封年二十余,有武艺,气力过人。而他之所以收养刘封作为义子,其中一部分原因是为了拉拢荆州豪族。还有一个说法是刘备见识到了刘封的宅心仁厚,便把刘备收为自己的义子,有心提拔他,刚收他为义子,就开始任命刘封做大官,给了他很多的特权,也正是因为看到了刘备对他的重视。
而他的这个义子确实没有让他失望,刘备占据汉中,随后派遣刘封南下与孟达攻占上庸,彼时刘封俨然已是刘备麾下的得力大将,地位也随之越来越重要。刘封名为义子实为武将,在建安二十四年刘备自立为汉中王,而被刘备收养为义子的刘封并没有成为合法的汉中王继承人,而是立年仅十三岁的刘禅为王太子。刘封的处境和地位变得日益尴尬。
同年蜀汉大将关羽发动襄樊大战,由此而威震华夏,而关羽在大胜的同时兵员也开始紧缺,所以要求上庸的刘封、孟达派遣援兵共同会战,但被刘封和孟达却以上庸三郡占领不久,不敢轻易离开为由拒绝。结果吕蒙偷袭荆州,关羽战败,并因此败走麦城,和儿子关平等人被活捉,关平因此被斩于临沮。
那么刘封不救关羽,这样做对吗?如果从客观上来说,不救也对。但是在这其中就有一个关键所在,关羽是刘备的兄弟,是左膀右臂,相当于二把手,关羽在刘备心中的地位,举重轻重,怎么能不救呢?《三国志关羽传》:先主与二人寝则同床,恩若兄弟。而稠人广坐,侍立终日,随先主周旋,不避艰险。所以有人说因为这件事,刘备对刘封一直颇有微词。
在建安二十五年),刘封和孟达不知什么原因闹了大矛盾,刘封夺了孟达的兵权,孟达一气之下给刘备写了份辞呈,孟达投魏后,曹丕立即命孟达为新城太守,让他和夏侯尚、徐晃一起兵讨刘封。这一下让刘封有些措手不及,失去了有力的支持,已经没有能力和敌军对抗,最终刘封战败落荒而逃。
刘封战败之后,刘备开始埋怨是刘封的蛮横无理逼迫孟达造反的,罪魁祸首就是刘封。刘备甚至一度想要赐死刘封,虽然诸葛亮极力劝阻刘备,但最终刘封还是自尽了,而这时的刘备哭了,于国于私,都是一种损失。而且孟达攻取上庸三郡时,曾劝刘封投降,而刘封言辞犀利、拒而不降,从这一点来说,倒也算是忠义!
刘封之亡归咎于他威胁到了后主刘禅的地位,不得不除。刘备即位汉中王前,就把刘封从汉中派往上庸支援作战,其后又命令他继续驻守上庸,可见不是像史书说的仅仅是担心孟达攻取上庸独力难支。刘备把他从自己身边支走,显然就是不想因继承人问题在阵营内部闹出争议,只得让刘封离开汉中的是非之地。刘封最后确实应了孟达的那句话,“知祸之将至而留之,非智也。”